如何检查两个表之间的雄辩关系?

时间:2017-11-10 22:02:28

标签: php laravel

我在用户表中有两个表,客户和用户:

ID

名称

电子邮件

密码

客户

ID

CUSTOMER_ID

的package_id

当有人注册时,在用户表中创建ID号,同时在客户表中创建:id和 customer_id 从id->用户获取相同的值 内部客户模型我有

 public function owners()
 {
 return $this->belongsToMany('App\User', 'customers');
}

我现在需要的只是在注册后检查当前customer_id的package_id是否为空或null返回..否则如果有任何数字返回... 我在控制器中尝试了这个但是没有工作

public function redirectpackage(Request $request)
{
if (Auth::check() && Auth::user()->customer->package_id == 1) {
return view('index.customer.customerpackage'); 
 }
 else{
 return view('index.customer.customerabout');    
 }
  }

1 个答案:

答案 0 :(得分:0)

如果customers.customer_id是引用users.id的外键,则:

  • 客户只能拥有一个用户("属于")。
  • 但是,用户可以拥有许多客户("有很多")。

因此,在owners()belongsToMany()替换belongsTo()

public function owners()
{
    return $this->belongsTo('App\User', 'customer_id');
}

User模型中,添加与Customer模型的关系:

class User extends Model
{
    public function customers()
    {
        return $this->hasMany('App\Customer', 'customer_id');
    }
}

现在,您可以检查用户是否在package_id关系中具有给定的customers()

Auth::user()->customers()->where('package_id', 1)->count();

或者,您可以使用isEmpty()代替count()