我在我的项目中使用 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 还不够好,不能轻易做到这一点。