我使用laravel 8到我的项目,试图从模型中提取数据
$user = Users::with('media')->get()->pluck('media.title', 'id')->all();
我得到输出
{
"sample": 1,
}
我期望的输出,查找值,将媒体表中的列和用户表中的列结合起来
{
"media.title + user.name": id,
}
据我所知,这是不可能的。在我看来,你有2-3个选项:
在User
模型中创建一个连接用户名和媒体标题的访问器,如:
public function getNameWithMediaAttribute()
{
return $this->name . ' + ' . $this->media->title
}
然后在查询后用->pluck('nameWithMedia')
取出。
或者您可以像使用$user = Users::with('media')->get();
那样拉它们并映射结果以返回您想要的格式。比如:
$users = User::with('media')->get()->map(function($user)
{
return [$user->media->title . ' + ' . $user->name => $user->id];
})->collapse();
不要忘记->collapse()
部分。
你也可以做一个查询,在一个字段下收集数据,然后你从数据库中取出它。但是我的SQL-fu不够好,不能很容易地做到这一点。