我有两个模型Category和Transaction表结构就像这样
Categories:
id,category_name,..
和
Transactions:
id,category_id,amount..
关系是
public function transactions()
{
return $this->hasMany('App\Transaction');
}
public function category()
{
return $this->belongsTo('App\Category', 'category_id');
}
我想检索交易表的所有数据,这些数据按类别名称排序。
最重要的是,我希望使用雄辩的方法来获取它。 我已经尝试过急切加载,我认为这对于belongsTo关系没有效果。
这是我用于急切加载的代码。
$transactions = Transaction::with(['category' => function ($query) {
$query->orderBy('category_name', 'asc');
}])->paginate(10);
到目前为止,我可以通过编写如下的查询来实现这一点,但我想使用雄辩的方法。
$transactions = Transaction::select(DB::raw('transactions.*'))
->leftJoin(DB::raw('(select id,category_name from categories) as categories'), 'categories.id', '=', 'transactions.category_id')
->orderBy('category_name', 'asc')
->paginate(10);
如果有人可以帮助我,那就太好了。谢谢。 注意:我使用的是Laravel 5.1
答案 0 :(得分:0)
$transactions = Transaction::with('categories')->group_by('category.name')->get();
答案 1 :(得分:0)
您必须提供定义关系的方法名称,在您的情况下,这是类别。
$transactions = Transaction::all()->with('category')->group_by('category.name')->get();