Laravel拔接关系



我使用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不够好,不能很容易地做到这一点。

最新更新