laravel ORM 连表查怎么灵活运用

    class User extends Model{
    public function Roles()
        {
            return $this->hasOne("App\Role", 'user_id', 'id');
        }
    }
    
    class Message extends Model{
    public function User()
        {
            return $this->belongsTo("App\User", 'user_id', 'id');
        }
    }
    //Controller 输出sql看
    \DB::listen(function($sql,$binds){
        dump($sql,$binds);
    });
    
    $role = User::find(1)->Roles;//一对多类似
    
    $mess = Message::with('User')->where('type',$type)->get();

类似上面的查询, $role = User::find(1)->Roles只查到roles的数据,如果我想查询user其中几个字段和roles的全部(一部分)字段,这orm的方法改怎么写。比如:select user.name,user.age,role.* from........

阅读 1.8k
1 个回答

伪代码。

Message::with(['User'=>function($query){
    return $query->select(这里就是你需要的字段。注意 必须要包含关系字段);//这里还可以用where
}])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进