簡體   English   中英

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

但是,當我嘗試在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM