![](/img/trans.png)
[英]Call to a member function getQuery() on null Laravel Eloquent
[英]Laravel 4 - Datatables - Call to a member function getQuery() on array
以下查詢MySQL在MySQL MyAdmin中可以正常工作。
SELECT contacts.id, contacts.gsm, contacts.name, contacts.last_name, contacts.email, contacts.created_at, if(temp.Count >= 1,temp.Count,0) as newCount
FROM contacts
LEFT JOIN
(SELECT contacts.id, COUNT(groupcontact.id) AS Count
FROM contacts
LEFT JOIN groupcontact ON groupcontact.contacts_id = contacts.id
LEFT JOIN groups ON groups.id = groupcontact.groups_id
WHERE groups.id = :idGrupo
GROUP BY contacts.id)
temp ON temp.id = contacts.id
但是,當我嘗試在RAW DB中使用LARAVEL + Datatables運行時,返回此錯誤-{“ error”:{“ type”:“ Symfony \\ Component \\ Debug \\ Exception \\ FatalErrorException”,“ message”:“調用成員函數getQuery()on array“,” file“:” C:\\ xampp \\ htdocs \\ mcdigital \\ laravel \\ vendor \\ bllim \\ datatables \\ src \\ Bllim \\ Datatables \\ Datatables.php“,” line“:256}}
我不知道為什么
LARAVEL控制器
$sql="SELECT contacts.id, contacts.gsm, contacts.name, contacts.last_name, contacts.email, contacts.created_at, if(temp.Count >= 1,temp.Count,0) as newCount
FROM contacts
LEFT JOIN
(SELECT contacts.id, COUNT(groupcontact.id) AS Count
FROM contacts
LEFT JOIN groupcontact ON groupcontact.contacts_id = contacts.id
LEFT JOIN groups ON groups.id = groupcontact.groups_id
WHERE groups.id = :idGrupo
GROUP BY contacts.id)
temp ON temp.id = contacts.id";
$usuarios = DB::select( DB::raw($sql), array('idGrupo' => $idGrupo));
return Datatables::of($usuarios)
->add_column('options', '
<label class="toggle yesNoGroup pull-left">
<input type="checkbox" name="checkbox-toggle" id="yesNoGroupchk-{{ $id }}" @if(newCount >0)checked@endif>
<i></i></label>
')->make();
JS數據表
if ($(tablaName).length && !isNaN(idGroup)) {
var $oTable = $(tablaName).dataTable({
"bServerSide": true,
"sAjaxSource": '/contact-list-group-load/'+idGroup,
"autoWidth": true,
"oLanguage": {
"sProcessing": '<image src="/images/ajax-loader.gif" alt="Cargando...">',
"sLengthMenu": "Mostrar _MENU_ contactos",
"sSearch": "Buscar:",
"sZeroRecords": "No se encontraron resultados",
"sInfo": "Mostrando _START_ al _END_ de un total de _TOTAL_ contactos",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
}
},
"aaSorting": [[0, 'desc']],
"sDom":
"<'row'<'col-xs-6'l><'col-xs-6'f>r>"+
"t"+
"<'row'<'col-xs-12 text-center tableCuantosRegistros'i><'col-xs-12 text-center'p>>",
"sLoadingRecords": '<image src="/images/ajax-loader.gif" alt="Cargando...">',
"aoColumnDefs": [
{ "bSearchable": false, "aTargets": [ 5, 6 ] },
{ "bSortable": false, "aTargets": [ 5, 6 ] }
],
"fnDrawCallback": function (oSettings) {
},
"iDisplayLength": 100
});
也許只是問問如何將這個mysql查詢轉換為Laravel Eloquent或Laravel查詢生成器。 請指教。
提前致謝
您的錯誤說明了一切。
您應該將$ usuarios 數組轉換為Collection為:
$usuarios = DB::select( DB::raw($sql), array('idGrupo' => $idGrupo));
$usuarios= collect($usuarios);
前進... 參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.