首页 > 解决方案 > 如何在laravel中的2个表之间建立关系

问题描述

图像 1

图像 2

图像 3

我有3张桌子作为图片,

site_notifications

site_users

site__users__notifactions

我想建立关系,所以我显示某个用户的通知详细信息

我试过了

public function notification()
{
return $this->hasManyThrough('App\SiteNotification', 'App\Site_Users_Notifaction', 'id', 'user_id');
}

但它给了我空

标签: phplaraveleloquent

解决方案


这不是那样的。您应该使用多对多关系

您的表名应为:

  1. 用户
  2. 通知
  3. 通知用户

您的型号名称应为:

  1. 用户
  2. 通知

然后在User课堂上:

class User extends Model
{
    public function notifactions()
    {
        return $this->belongsToMany(Notifaction::class);
    }
}

然后在Notifaction课堂上:

class Notifaction extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class);
    }
}

然后你可以这样查询:

$user = App\User::find(1);

foreach ($user->notifactions as $notifaction) {
    //
}

推荐阅读