Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.02.2019 22:22:06

Помогите сделать нужное вхождение таблиц

Привет всем smile
Вобщем такая беда, уже на протяжении целого дня не могу нормально сделать вхождение таблиц
сразу скажу, я не супер пупер кодер и тд - новичок я smile
Задача следующая:
Есть 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.

Не в сети

#2 07.03.2019 10:11:37

Re: Помогите сделать нужное вхождение таблиц

Как я понимаю, эти две модели у вас связаны. Скорее всего даже отношением один ко многим. Почитайте документацию по поводу функций - model::with(), model::has(), model::whereHas()
То есть если у тебя в моделе Jackpot прописано отношение типа

public function названиеОтношения() {
	return $this->hasMany('App\Models\JackpotBets', 'game_id');
}

Тогда ты сможешь прописывать конструкции, о которых написал выше.

Не в сети

#3 07.03.2019 10:50:13

Re: Помогите сделать нужное вхождение таблиц

Как я понимаю, эти две модели у вас связаны. Скорее всего даже отношением один ко многим. Почитайте документацию по поводу функций - model::with(), model::has(), model::whereHas()То есть если у тебя в моделе Jackpot прописано отношение типа

public function названиеОтношения() {
	return $this->hasMany('App\Models\JackpotBets', 'game_id');
}

Тогда ты сможешь прописывать конструкции, о которых написал выше.

Да, я пробовал и так делать, но вот беда. У меня 2 условия 'game_id' и 'room'. Что через отношения я реализовать так и не смог.

Не в сети

#4 07.03.2019 11:22:55

Re: Помогите сделать нужное вхождение таблиц

То есть типа такого
->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');
тоже не работает?
(не проверял, просто предположил)

Не в сети

#5 07.03.2019 11:35:38

Re: Помогите сделать нужное вхождение таблиц

->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');тоже не работает?

Если подставлять именно в ручную значение комнаты в >where то работает, а так как вы предложили не пробовал.
К сожалению проверить смогу не раньше чем через 2 недели.. Спасибо за предложение.

Не в сети

Подвал раздела