【问题标题】:Laravel Pluck Concat RelationsLaravel Pluck Concat 关系
【发布时间】:2021-12-01 07:37:45
【问题描述】:

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

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

我得到了输出

    {
     "sample": 1,
    }

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

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

【问题讨论】:

    标签: php laravel eloquent laravel-8 pluck


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2020-09-07
      相关资源
      最近更新 更多