如何解决Laravel在主模型旁边的返回相关模型
我有一个User
模型,该模型具有以下方法:
public function articles()
{
return $this->hasMany('App\Article');
}
还有Article
模型,该模型具有:
public function user()
{
return $this->belongsTo('App\User');
}
我想返回包含他们每篇文章的用户列表。因此,这个:
// only returns list of users
return $user = User::all();
并具有以下内容:
$user = User::all();
foreach ($user[0]->articles as $article) {
return $article;
}
我只有第一篇文章。有什么办法(在laravel中)检索每个人的文章的整个列表?
解决方法
您需要使用方法来调用,以渴望加载所有文章。
$user = User::with('articles')->get();
dd($user);
或者如果您想延迟加载。
$user = User::get();
dd($user->articles());
您可以使用select()选择特定列-例如
$user = User::select('name','email')->get();
如果要在with()中选择特定的列,则
$user = User::with(['articles' => function($query){
$query->select('id','title');
}])->get();
或
$user = User::with(['articles' => function($query){
$query->select('id','title');
}])->select('name','email')->get();
,
这里的问题是,您在foreach循环内返回,这将在第一次迭代后停止循环,因此仅返回第一篇文章。
如果要在JSON响应中显示用户和文章,则应查看Eloquent Resources,Writing Resources,尤其是本章的 Relationships 部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。