如何使用两个 ID 在 laravel 中设置关系?

How to set relation in laravel with two ids?

我有这两个表:

product
- id
- name

favorites
- id
- product_id
- user_id

因此,用户只能将产品添加到收藏夹一次。我怎样才能像下面这样建立这种关系?

public function favorites() {
    return $this->hasOne(Favorite::class, 'user_id', 'product_id')
}

所以,我想同时使用 product_iduser_id,这样查询就会 return 正确的结果如下:

Get me the wishlist of user with id 1 and product with id 13!

你可以这样做:

最喜欢的模特class:

public function product(){
 return $this->belongsTo('App\Product');
}
public function user(){
 return $this->belongsTo('App\User');
}

产品型号Class:

public function favorites(){
 return $this->hasMany('App\Favorite');
}

在用户模型中 Class:

public function favorites(){
 return $this->hasMany('App\Favorite');
}

用户可能有很多收藏,所以在Class User

public function favorites()
{
    return $this->hasMany('App\Favorite');
}

Class 最爱

public function product()
{
    return $this->belongsTo('App\Product');
}
public function user()
{
    return $this->belongsTo('App\User');
}

如果你有用户你可以

$userFavProducts = $user->favorites;

$product2 = $user->favorites()->where('product_id', 2)->get();

你应该试试这个:

收藏模型

public function product(){
 return $this->belongsTo('App\Product','product_id');
}
public function user(){
 return $this->belongsTo('App\User','user_id');
}