-2

我在我的项目中使用 laravel 8,试图从模型中提取数据

    $user = Users::with('media')->get()->pluck('media.title', 'id')->all();

我得到了输出

    {
     "sample": 1,
    }

我的预期输出,寻找值结合媒体表中的列和用户表中的列

   {
     "media.title + user.name": id,
   }
4

1 回答 1

2

据我所知,直接采摘是不可能的。在我看来,您有 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 还不够好,不能轻易做到这一点。

于 2021-10-12T18:39:21.007 回答