Size: a a a

2020 August 13

🎄P

🎄Victor Ponamariov... in Laravel Pro
век живи век учись, щас попробую) спасибо
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
блин че то туплю, но when же принимает просто условие какое-то, я же не могу туда sql вписать? )  впрочем даже на чисто sql не знаю как сделать, when case или что то такое
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
хм
источник

ЕП

Евгений Перин ⭐️... in Laravel Pro
when первым параметров принимает условие, а вторым колбэк где уже вставляешь свой whereHas
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
да, но что прописать в условие? “trips.status === ‘new’” ?)
юзер передает destination_id. В зависимости от статуса нужно фильтровать либо по одному whereHas, либо по другому. Но статус это не то что передает юзер, это то что хранится в таблице trips
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
Сделай ->where(function( и там сделай обычный where(status) и whereHas
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
и второй такой же, с другим статусом и orWhere(function
источник

ЕП

Евгений Перин ⭐️... in Laravel Pro
так, чото я  поверхностно смотрел на задачу) скинь свой запрос который есть сейчас и скинь где надо это условие указать
источник

v

vladimir in Laravel Pro
->when($this->status === 'new', static function($query): void {
     $query->whereHas('destinations')...
})->when($this->status === 'has_report', static function($query): void {
     $query->whereHas('report.destinations')....
});


не то ?)
источник

AP

Artem Poezdov in Laravel Pro
Ребят кто возился с почтой для домена от яндекса, что делать, у меня 553 ошибка, как только меняю в .env MAIL_FROM_ADRESS с noreply@mydomain.com на mylogin@yandex.ru все работает
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
vladimir
->when($this->status === 'new', static function($query): void {
     $query->whereHas('destinations')...
})->when($this->status === 'has_report', static function($query): void {
     $query->whereHas('report.destinations')....
});


не то ?)
$this это? ) в модели какой-то scope?
источник

v

vladimir in Laravel Pro
Поправил
источник

v

vladimir in Laravel Pro
очепятался )
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
Евгений Перин ⭐️
так, чото я  поверхностно смотрел на задачу) скинь свой запрос который есть сейчас и скинь где надо это условие указать
Я даже на чистом SQL что-то не знаю как оно будет выглядеть)

Есть таблица trips:
id status
1   ‘new’
2   ‘has_report’

Есть таблица trip_reports
id trip_id
1  1
1  2

Есть таблица destinations
id destinonable_id destionable_type country_id

destinations либо для trip либо для trip_report.

Таблицу trips нужно фильтровать по country_id. Если статус new то через whereHas(‘destinations’) , то есть по предполагаемым странам, а если статус has_report то по whereHas(‘report.destiantions’), то есть по странам из отчета


Если на чистой пыхе то я бы прошелся через массив $trips, у каждой сравнил бы ее статус, и если если татус new то фильтровал бы по relationship destinations, а если статус has_report то по relationship ->report->destinations
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
vladimir
->when($this->status === 'new', static function($query): void {
     $query->whereHas('destinations')...
})->when($this->status === 'has_report', static function($query): void {
     $query->whereHas('report.destinations')....
});


не то ?)
Окей, вот допустим в методе контроллера как это будет ввыглядеть?)
Trip::when($this->status - не прокатит, $this это контроллер
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
Если туплю сорри)
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
🎃 Даниил ◠‿◠✿
Сделай ->where(function( и там сделай обычный where(status) и whereHas
читай это
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel Pro
мб возможно
источник

v

vladimir in Laravel Pro
какая-то ерунда получилось 😄
$countryId = 1;

Trip::where(function($query) use($countryId): void {
   $query->where('status', 'new')->whereHas('destinations', function($query) use($countryId): void {
        $query->where('country_id', $countryId);
   });
})->orWhere(function($query) use($countryId): void {
   $query->where('status', 'has_report')->whereHas('report.destinations', function($query) use($countryId): void {
        $query->where('country_id', $countryId);
   });
});
источник

🎄P

🎄Victor Ponamariov... in Laravel Pro
а ща, кстати, попробую
источник