【问题标题】:Laravel 5.5 can't get selected column data using belongsToLaravel 5.5 无法使用 belongsTo 获取选定的列数据
【发布时间】:2018-09-17 23:20:51
【问题描述】:

我有 2 个模型(UserUsersDetails)与 Eloquent Laravel 相关。

使用“SelDetails”为“用户”实现建模

public function SelDetails {
    return $this->belongsTo('App\UsersDetails', 'users_id');
}

我只想从 SelDetails 中获取两列“created_by_id”和“created_by_name”

用户控制器

$users = User::with(['SelDetails' => function($query){
        $query->select(['created_by_id', 'created_by_name']);
    }])
    ->where('is_active', '=', 0)
    ->orderBy('id', 'desc')
    ->get();

我正在从 User 获取数据,但在 SelDetails 中出现空白

[relations:protected] => Array
(
     [SelDetails] => 
)

请纠正我。

【问题讨论】:

  • 在 select 中添加列 user_id :$query->select(['user_id', 'created_by_id', 'created_by_name']);
  • 添加 created_by_id 相关:public function SelDetails { return $this->belongsTo('App\UsersDetails', 'users_id', 'created_by_id'); }
  • @Mohammad 不工作

标签: laravel eloquent laravel-5.5


【解决方案1】:

大家感谢您对此问题的宝贵回复。我通过以下方式得到了解决方案。

“用户”模型与“SelDetails”的关系发生变化

public function SelDetails {
    #return $this->belongsTo('App\UsersDetails', 'users_id');// the old one
    return $this->hasOne('App\UsersDetails', 'users_id');
}

“用户控制器”的变化

$users = User::with('SelDetails')->where('is_active', '=', 0)->orderBy('id', 'desc')->get();

这就是我所做的改变并得到了结果

谢谢

【讨论】:

    【解决方案2】:

    我可能错了,但可能是select中的数组,试试

    $query->select('created_by_id', 'created_by_name');
    

    【讨论】:

    • 感谢您的回复
    【解决方案3】:

    你有没有尝试过类似的东西

    $users = App\Book::with('author:id,name')->get(); 来自the documentation? 在您的情况下,它应该如下所示:

    User::with('SelDetails:created_by_id,created_by_name')
        ->where('is_active', '=', 0)
        ->orderBy('id', 'desc')
        ->get();
    

    with() 方法可以采用字符串(或由字符串填充的数组),例如。 relationName:column1,column2.

    【讨论】:

    • 这就是答案。文档甚至准确地描述了如何做到这一点。
    • 它对我不起作用。感谢您的答复。顺便说一句,我刚刚找到了解决方案。
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2018-10-06
    • 2018-04-07
    • 1970-01-01
    • 2019-10-05
    • 2021-04-05
    相关资源
    最近更新 更多