2016-11-04 58 views
0

聯接的列我有以下代碼:如何返回列,按照一定的順序(雄辯)

Incident::where('id','<','35')->with('priority')->paginate(15); 

眼下這個返回如下: ID,標題,描述,priority_id和優先對象。

我想只檢索ID,標題和優先級對象,沒有描述,也沒有priority_id但我希望它們按照特定的順序,如下所示: ID,優先級和標題。

但是,當我做到以下幾點:

Incident::where('id','<','5')->with('priority')->paginate(15, array('id', 'priority', 'title')); 

我得到一個錯誤說沒有發現列incidents.priority。

有沒有什麼辦法只選擇我想要的列和我想要的順序,當他們中的一個通過FK被引用?

謝謝!

+0

這可能是幫助you.check此鏈接https://packagist.org/packages/witty/laravel-table-view – Shuvo

+0

選中此:http://stackoverflow.com/questions/23612221/how-to-exclude -sertains-columns-while-using-eloquent –

+0

我無法想象一個場景,依賴於數組的順序 – tam5

回答

0

你並不需要在列表中包括priorityIncident::where('id','<','5')->with('priority')->paginate(15, array('id', 'title'));

+0

但是,我不會在我想要的地方獲得優先權:'( –

+0

@SofiaGilardino,你能告訴你在回收的收藏中做什麼? –

0

如果你傳遞一個回調到with方法,你可以指定一個像這樣的順序:

Incident::where('id','<','35') 
    ->with(['priority' => function ($query) { 
     $query->select('id', 'priority', 'title'); 
    }]) 
    ->paginate(15); 
0

您的查詢不加入。 with('priority')實際上是第二個單獨的查詢,它在Incident查詢後執行,然後附加到Incident模型。如果你想引用列,並使用一個連接你會做這樣的:

Incident::select('id', 'priorities.*', 'incidents.title') 
    ->leftJoin('priorities', 'priorities.id', '=', 'incidents.priority_id') 
    ->where('incidents.id', '>', '5') 
    ->paginate(15); 

如果你不想使用上述然後@tam答案將是最好的,但要確保他的解決方案,包括id在子查詢回調中,因爲這是關係如何在查詢運行後將關係附加到父模型。