Anonymous
Как найти последнюю запись для конкретного пользователя в таблице базы данных?
Сообщение
Anonymous » 06 дек 2024, 08:18
Я работаю над PHP-приложением для торта. Здесь я использую jqgrid для отображения своих записей.
Это мой ctp-файл:
Код: Выделить всё
jQuery(document).ready(function(){
jQuery("#list").jqGrid(
{
url:'',
datatype: "json",
mtype: "GET",
colNames:['Student','Phone No.','Batch','Created'],
colModel:[
{name:'studentname',index:'studentname', width:30, search:true},
{name:'contactnumber1',index:'contactnumber1', width:20, search:true},
{name:'batchname',index:'batchname', width:30, search:true},
{name:'latest',index:'latest', width:30, search:true},
],
rowNum:10,
rowList:[10,20,30],
pager: jQuery('#pager'),
sortname: 'latest',
viewrecords: true,
sortorder: "desc",
caption:"Placements",
height:"auto",
autowidth: true,
navigator:true
});
jQuery("#list").navGrid("#pager",{edit:false,add:false,del:false,search:false});
jQuery("#list").jqGrid('filterToolbar');
})
И это моя функция, определенная в контроллере
Код: Выделить всё
$conditions = array();
if(!empty($this->params['named']['batch']))
array_push(&$conditions, array('Batch.id' => $this->params['named']['batch'] ));
array_push(&$conditions, array('Student.type' => 'student' ));
array_push(&$conditions, array('Student.trainingcompleted' => '1' ));
$result = $this->Placement->find('all', array(
'fields' => array('id','student_id','company_id','branch_id','max(Placement.created) as latest'),
'link' => array(
'Student' => array(
'Batch'
),
'Company'
),
'group'=>'Placement.student_id',
'conditions'=>$conditions,
'order' => $sort_range,
'limit' => $limit_range
));
}
$i = 0;
$response->page = $page;
$response->total = $total_pages;
$response->records = $count;
//pr($result);
foreach($result as $result)
{
$response->rows[$i]['id'] = $result['Placement']['id'];
$student = "" . $result['Student']['fullname'] . "";
$batch = "" . $result['Batch']['name'] . "";
$contactnumber1 =$result['Student']['contactnumber1'];
$response->rows[$i]['cell'] = array($student, $contactnumber1, $batch,$result['Placement']['latest']);
$i++;
}
echo json_encode($response);
В таблице мест размещения может быть несколько записей для учащегося.
Например:
Код: Выделить всё
id student_id istillworking created
1 16 no 2010-09-07 10:02:16
2 16 yes 2010-12-30 12:48:44
Я хотел отобразить последнюю запись для каждого пользователя.
Например, для Student_id 16 должна быть получена запись, созданная 30 декабря 2010 г. 12:48:44.
Я попытался реализовать это с помощью приведенного выше кода. Но я получаю следующую ошибку:
Предупреждение[/b] (512):
Ошибка SQL: 1054: Неизвестный столбец «Placement.latest» в «пункте заказа»
Я не могу разобраться в проблеме.
Подробнее здесь:
https://stackoverflow.com/questions/458 ... base-table
1733462331
Anonymous
Я работаю над PHP-приложением для торта. Здесь я использую jqgrid для отображения своих записей.[b]Это мой ctp-файл: [code] jQuery(document).ready(function(){ jQuery("#list").jqGrid( { url:'', datatype: "json", mtype: "GET", colNames:['Student','Phone No.','Batch','Created'], colModel:[ {name:'studentname',index:'studentname', width:30, search:true}, {name:'contactnumber1',index:'contactnumber1', width:20, search:true}, {name:'batchname',index:'batchname', width:30, search:true}, {name:'latest',index:'latest', width:30, search:true}, ], rowNum:10, rowList:[10,20,30], pager: jQuery('#pager'), sortname: 'latest', viewrecords: true, sortorder: "desc", caption:"Placements", height:"auto", autowidth: true, navigator:true }); jQuery("#list").navGrid("#pager",{edit:false,add:false,del:false,search:false}); jQuery("#list").jqGrid('filterToolbar'); }) [/code] И это моя функция, определенная в контроллере [code] $conditions = array(); if(!empty($this->params['named']['batch'])) array_push(&$conditions, array('Batch.id' => $this->params['named']['batch'] )); array_push(&$conditions, array('Student.type' => 'student' )); array_push(&$conditions, array('Student.trainingcompleted' => '1' )); $result = $this->Placement->find('all', array( 'fields' => array('id','student_id','company_id','branch_id','max(Placement.created) as latest'), 'link' => array( 'Student' => array( 'Batch' ), 'Company' ), 'group'=>'Placement.student_id', 'conditions'=>$conditions, 'order' => $sort_range, 'limit' => $limit_range )); } $i = 0; $response->page = $page; $response->total = $total_pages; $response->records = $count; //pr($result); foreach($result as $result) { $response->rows[$i]['id'] = $result['Placement']['id']; $student = "" . $result['Student']['fullname'] . ""; $batch = "" . $result['Batch']['name'] . ""; $contactnumber1 =$result['Student']['contactnumber1']; $response->rows[$i]['cell'] = array($student, $contactnumber1, $batch,$result['Placement']['latest']); $i++; } echo json_encode($response); [/code] В таблице мест размещения может быть несколько записей для учащегося. Например: [code]id student_id istillworking created 1 16 no 2010-09-07 10:02:16 2 16 yes 2010-12-30 12:48:44 [/code] Я хотел отобразить последнюю запись для каждого пользователя. Например, для Student_id 16 должна быть получена запись, созданная 30 декабря 2010 г. 12:48:44. Я попытался реализовать это с помощью приведенного выше кода. Но я получаю следующую ошибку: Предупреждение[/b] (512): [b]Ошибка SQL:[/b] 1054: Неизвестный столбец «Placement.latest» в «пункте заказа» Я не могу разобраться в проблеме. Подробнее здесь: [url]https://stackoverflow.com/questions/4582828/how-to-find-the-latest-record-for-a-specific-user-in-a-database-table[/url]