Как установить отношение в Laravel с двумя идентификаторами? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть две таблицы:

product
- id
- name

favorites
- id
- product_id
- user_id

Таким образом, пользователь может добавить товар в избранное только один раз. Как я могу установить это отношение что-то вроде следующего?

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

Итак, я хочу использовать оба product_id & user_id, чтобы запрос возвращал правильный результат в соответствии со следующим:

Получите мне список желаний пользователя с идентификатором 1 и продукта с идентификатором 13!

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

У пользователя может быть много избранного, поэтому в Class User

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

Класс Фаворит

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();
0 голосов
/ 05 ноября 2018

Вы должны попробовать это:

Избранное Модель

public function product(){
 return $this->belongsTo('App\Product','product_id');
}
public function user(){
 return $this->belongsTo('App\User','user_id');
}
0 голосов
/ 05 ноября 2018

вы можете сделать что-то подобное:

в избранном классе Модель:

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

В модели продукта класса:

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

В классе модели пользователя:

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