Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет всем
Вобщем такая беда, уже на протяжении целого дня не могу нормально сделать вхождение таблиц
сразу скажу, я не супер пупер кодер и тд - новичок я
Задача следующая:
Есть 2 таблицы одна jackpot другая jackpot_bets
используются через модели (Jackpot:: и JackpotBets::) соответсвенно.
Нужно получить список записей из Jackpot с некоторыми условиями: ->where('status', 0)->where('room', 'lol').
в полученную коллекцию добавить новый элемент предположим "betsuser" из JackpotBets по условиям jackpot.game_id = jackpot_bets.game_id, jackpot.room = jackpot_bets.room, jackpot.winner_id = jackpot_bets.user_id .
Чтобы это выглядело так чтобы в обьекте Jackpot появился массив "betsuser" с содержимым из условий выше.
Пробовал разные конструкции по типу этой:
Jackpot::where('jackpot.room', 'lol')
->where('jackpot.status', 3)
->rightJoin('jackpot_bets', function ($join) {
$join->on('jackpot.game_id', '=', 'jackpot_bets.game_id')->orOn('jackpot.room', '=', 'jackpot_bets.room')->orOn('jackpot.winner_id', '=', 'jackpot_bets.user_id');
})
->select(['jackpot.*', 'jackpot_bets.items as betsuser'])
->orderBy('jackpot.id', 'desc')
->get();
Вроде бы близко к нужному результату. Но вот проблема в том что betsuser не содержит массив, а только 1 запись из jackpot_bets, причем дублируя записи jackpot, но уже с новым betsuser = jackpot_bets.
Не в сети
Как я понимаю, эти две модели у вас связаны. Скорее всего даже отношением один ко многим. Почитайте документацию по поводу функций - model::with(), model::has(), model::whereHas()
То есть если у тебя в моделе Jackpot прописано отношение типа
public function названиеОтношения() {
return $this->hasMany('App\Models\JackpotBets', 'game_id');
}
Тогда ты сможешь прописывать конструкции, о которых написал выше.
Не в сети
Как я понимаю, эти две модели у вас связаны. Скорее всего даже отношением один ко многим. Почитайте документацию по поводу функций - model::with(), model::has(), model::whereHas()То есть если у тебя в моделе Jackpot прописано отношение типа
public function названиеОтношения() { return $this->hasMany('App\Models\JackpotBets', 'game_id'); }
Тогда ты сможешь прописывать конструкции, о которых написал выше.
Да, я пробовал и так делать, но вот беда. У меня 2 условия 'game_id' и 'room'. Что через отношения я реализовать так и не смог.
Не в сети
То есть типа такого
->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');
тоже не работает?
(не проверял, просто предположил)
Не в сети
->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');тоже не работает?
Если подставлять именно в ручную значение комнаты в >where то работает, а так как вы предложили не пробовал.
К сожалению проверить смогу не раньше чем через 2 недели.. Спасибо за предложение.
Не в сети
Страницы 1