为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用eloquent在laravel中加入3个表?

如何使用eloquent在laravel中加入3个表?

PHP
RISEBY 2021-06-15 17:14:49
如何使用 laravel 5 中的 eloquent 从 3 表中获取一些数据?我有 3 个表,列表,卡片,用户列出模型public function card()    {        return $this->hasMany(Card::class);    }卡片型号public function lists()    {        return $this->belongsTo(Lists::class);    }public function member()    {        return $this->belongsToMany(User::class)->withPivot('status','user_role')->withTimestamps();    }用户模型public function card_member(){        return $this->belongsToMany(Card::class)->withTimestamps();    }我想在分配给特定用户的卡片中获取列表(例如 user_id :2)喜欢这个 JSOn 数据{    "id": 2,    "boards_id": "1",    "list_name": "List 2 B1 U1",    "position": 2,    "created_at": "2019-04-03 16:02:03",    "updated_at": "2019-04-03 16:02:03",    "card": [      {        "id": 8,        "lists_id": "2",        "card_title": "Card 3 L2",        "labels": null,        "description": null,        "start_card": null,        "end_card": null,        "position": 2,        "is_archieved": false,        "created_at": "2019-04-26 15:34:22",        "updated_at": "2019-04-26 15:34:22"      },      {        "id": 9,        "lists_id": "2",        "card_title": "Card 4 L2",        "labels": null,        "description": null,        "start_card": null,        "end_card": null,        "position": 3,        "is_archieved": false,        "created_at": "2019-04-26 15:34:25",        "updated_at": "2019-04-26 15:34:25"      }表结构: 列表:idboards_idlistnameposition卡片 :idlists_idcard_titleCard_user(数据透视表):idcard_iduser_id
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

让我们将关系名称从“成员”更改为“成员”,因为这是多对多关系。


public function members()

    {

        return $this->belongsToMany(User::class)->withPivot('status','user_role')->withTimestamps();

    }

你可能会说:


$userId = 2;


$lists = List::with([

    'card' => function ($query) {

        $query->whereHas('members', function ($query) user ($userId) {

            $query->whereKey($userId);

        })

    }

])

->whereHas('card.members', function ($query) use ($userId) {

    $query->whereKey($userId);

})

->get();

所以我们只急切加载用户 ID 为 2 的卡片。


查看完整回答
反对 回复 2021-06-19
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信