Laravel 4 - 数据表 - 调用数组上的成员函数 getQuery()

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

但是当我尝试 运行 与 LARAVEL + RAW DB 中的数据表时,returns 这个错误- {"error":{"type":"Symfony\Component\Debug\Exception\FatalErrorException","message":"Call to a member function 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 array 转换为 Collection 为:

$usuarios = DB::select( DB::raw($sql), array('idGrupo' => $idGrupo));
    $usuarios= collect($usuarios);

继续……