Size: a a a

Laravel для начинающих

2020 August 19

RK

Ratibor Korobin in Laravel для начинающих
Vladimir Yefremov
может попробовать по типу belongsToMany, только belongsTo  - в обоих моделях встречно?
Тогда пропадает возможность изящно прикрепить одну модель к другой + проблема с получением второй модели через первую. В итоге всё всё равно сведётся к наличию связи hasOneThrough
источник

RK

Ratibor Korobin in Laravel для начинающих
Обожаю Laravel за изящность. Но иногда некоторых фич прям совсем не хватает...
источник

VY

Vladimir Yefremov in Laravel для начинающих
Ratibor Korobin
Обожаю Laravel за изящность. Но иногда некоторых фич прям совсем не хватает...
ну....
сорри :)
источник

СА

Станислав Алексеев... in Laravel для начинающих
ребят,  а есть возможность для одной очереди в rabbitmq использовать единственный обработчик? чтобы не приходилось через пляски с бубном для разных очередей с одинаковым payload определять обработчика и его триггерить?
источник

К

Канат in Laravel для начинающих
Ratibor Korobin
Всем доброе утро!

Столкнулся со следующией ситуацией:
Мне нужно создать связь между моделями по принципу belongsToMany, однако, это должна быть связь один-к-одному, т.е. в связующей таблице должна быть только одна запись, связывающая одни и те же ключи.

Архитектура такая (и просьба не просить менять), что необходимо это реализовать именно через третью (связующую) таблицу.
Я бы мог просто использовать связь belongsToMany, но она возвращает коллекцию вместо конкретной модели.
А все решения в интернете по превращению ответа в модель от этой связи выглядят костылями.

Я нашёл решение в виде связи hasOneThrough, однако оно не устраивает по двум причинам:
- (основная) Хотелось бы использовать удобные функции как в belongsToMany (attach и sync)
- (дополнительная) С прописыванием ключей к hasOneThrough ещё та заморочка. Практически перебором подбирал.

Есть какое-то элегантное решение для данной задачи?
По идее, случай не уникальный
Составной уникальный ключ в связующей таблице и отлавливай экзепшн, но это так навскидку )
источник

RK

Ratibor Korobin in Laravel для начинающих
Канат
Составной уникальный ключ в связующей таблице и отлавливай экзепшн, но это так навскидку )
И при этом использовать связь belongsToMany?
источник

К

Канат in Laravel для начинающих
Ratibor Korobin
И при этом использовать связь belongsToMany?
Ну да
источник

И

Илья in Laravel для начинающих
Парни подскажите пожалуйста, формой передаю поля, принимаю таким образом:
if ($request->has('brand')){}
Все работает, но как быть если несколько полей передаю? Допустим
if ($request->has('brand')) и if ($request->has('color'))
Делать так -
  if ($request->has('brand') && $request->has('color'))
{}
Или есть вариант по лучше?
источник

SG

Sergey Gerasimov in Laravel для начинающих
Илья
Парни подскажите пожалуйста, формой передаю поля, принимаю таким образом:
if ($request->has('brand')){}
Все работает, но как быть если несколько полей передаю? Допустим
if ($request->has('brand')) и if ($request->has('color'))
Делать так -
  if ($request->has('brand') && $request->has('color'))
{}
Или есть вариант по лучше?
Смотря что именно нужно
источник

RK

Ratibor Korobin in Laravel для начинающих
Илья
Парни подскажите пожалуйста, формой передаю поля, принимаю таким образом:
if ($request->has('brand')){}
Все работает, но как быть если несколько полей передаю? Допустим
if ($request->has('brand')) и if ($request->has('color'))
Делать так -
  if ($request->has('brand') && $request->has('color'))
{}
Или есть вариант по лучше?
$request->has(['brand', 'color'])
источник

И

Илья in Laravel для начинающих
Sergey Gerasimov
Смотря что именно нужно
Ну у меня фильтр, нужно отфильтровать вот такой запрос /category/1?brand[]=Nike&sezon[]=Лето
источник

RK

Ratibor Korobin in Laravel для начинающих
Илья
Парни подскажите пожалуйста, формой передаю поля, принимаю таким образом:
if ($request->has('brand')){}
Все работает, но как быть если несколько полей передаю? Допустим
if ($request->has('brand')) и if ($request->has('color'))
Делать так -
  if ($request->has('brand') && $request->has('color'))
{}
Или есть вариант по лучше?
Вот тут всё про это есть: https://laravel.com/docs/7.x/requests
источник

SG

Sergey Gerasimov in Laravel для начинающих
Илья
Ну у меня фильтр, нужно отфильтровать вот такой запрос /category/1?brand[]=Nike&sezon[]=Лето
Ну так через when добавляй фильтры, как вариант
источник

И

Илья in Laravel для начинающих
Вот полностью, просто переменная $products переписывается заново, я думал она будет дополнятся
if ($request->has('brand')) {
       $products = Products::join('ss_brands', 'ss_brands.id', 'ss_products.brand_id')->whereIn('ss_brands.name', $request->brand)->select('ss_products.id', 'ss_products.img', 'ss_products.price', 'ss_products.quantity', 'ss_products.name')->get();
       //dd($products);
   }

   if ($request->has('sezon')) {
       $products = Products::whereIn('sezon', $request->sezon)->get();
       //dd($products);
   }
источник

SG

Sergey Gerasimov in Laravel для начинающих
Илья
Ну у меня фильтр, нужно отфильтровать вот такой запрос /category/1?brand[]=Nike&sezon[]=Лето
Product::query()->when($request->get('brand'), function($query, $brands) {$query->whereIn('brand_id', $brands);})->get()
источник

SG

Sergey Gerasimov in Laravel для начинающих
Илья
Вот полностью, просто переменная $products переписывается заново, я думал она будет дополнятся
if ($request->has('brand')) {
       $products = Products::join('ss_brands', 'ss_brands.id', 'ss_products.brand_id')->whereIn('ss_brands.name', $request->brand)->select('ss_products.id', 'ss_products.img', 'ss_products.price', 'ss_products.quantity', 'ss_products.name')->get();
       //dd($products);
   }

   if ($request->has('sezon')) {
       $products = Products::whereIn('sezon', $request->sezon)->get();
       //dd($products);
   }
А тут я уже писал что через whereHas делай
источник

И

Илья in Laravel для начинающих
Sergey Gerasimov
А тут я уже писал что через whereHas делай
и тогда будет дополнятся если делать через whereHas и отдельными if?
источник

SG

Sergey Gerasimov in Laravel для начинающих
Илья
и тогда будет дополнятся если делать через whereHas и отдельными if?
Не if, а через when
источник

VY

Vladimir Yefremov in Laravel для начинающих
есть запрос
return Zone::with(['report.region', 'landfills', 'vehicles', 'auto_park', 'checks', 'media', 'zoneTitle'])
мне нужно по связи 'landfills' сделать count(), но также чтобы 'landfills' тоже оставался в запросе

подскажите плз - как его (count()) сюда прилепить?
или надо сделать отдельным запросом?
источник

И

Илья in Laravel для начинающих
Sergey Gerasimov
Не if, а через when
получается одним запросом можно сделать через when?
источник