Size: a a a

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

2020 June 25

AP

Alexander Pavlenko 🌚... in Laravel для начинающих
не надо так🌚
источник

w

walfter in Laravel для начинающих
Как вариант автору добавить метод
categories() {
 return Categories::whereIn('id', $this->books->pluck('id')->toArray())->get()
}
источник

VY

Vladimir Yefremov in Laravel для начинающих
walfter
$author->books()->category
вот так получилось нормально
$bookCategories = $author->books()->with('category')->get();
оказывается hasManyThrough и не нужна....
источник

w

walfter in Laravel для начинающих
Это получить книги с категориями
источник

w

walfter in Laravel для начинающих
А не отдельно категории
источник

VY

Vladimir Yefremov in Laravel для начинающих
walfter
Это получить книги с категориями
да,
и отсюда получить категории вроде  не сложно уже,
во всяком случае форич все выбирает нормально
источник

w

walfter in Laravel для начинающих
Сортировать категории сложней, возможно уйдёт больше циклов... Но да, доступ к категориям будет
источник

w

walfter in Laravel для начинающих
А ну и может быть такое что при выводе будут копии категорий
источник

w

walfter in Laravel для начинающих
Если книги лежать будут не в разных категориях
источник

VY

Vladimir Yefremov in Laravel для начинающих
walfter
Сортировать категории сложней, возможно уйдёт больше циклов... Но да, доступ к категориям будет
да, они сейчас повторяются....
я попробую твой запрос
источник

ЭБ

Эдуард Баженов... in Laravel для начинающих
Привет! Возник такой вопрос:
Имеется модель Order и четыре типа изделиый, например OneProduct, TwoProduct и тд.
Сейчас у меня вот такое чудо написано в Order :
public function products()
   {
       $model = '';
       switch ($this->product_type_id)
       {
           case 1:
               $model = 'App\Models\RollProduct';
               break;
           case 2:
               $model = 'App\Models\ZebraProduct';
               break;
           case 3:
               $model = 'App\Models\VertProduct';
               break;
           case 4:
               $model = 'App\Models\GorizProduct';
               break;
       }
       return $this->hasMany($model);
   }

Полиморфное manyToMany не совсем подходит, т.к. там нужно для каждого типа продукта прописывать отношение, а у меня каждый заказ относится только с одним типом продукта.
Есть мысль сделать общую модель Product, но туплю...
Подскажите, как быть
источник

BS

B S in Laravel для начинающих
Эдуард Баженов
Привет! Возник такой вопрос:
Имеется модель Order и четыре типа изделиый, например OneProduct, TwoProduct и тд.
Сейчас у меня вот такое чудо написано в Order :
public function products()
   {
       $model = '';
       switch ($this->product_type_id)
       {
           case 1:
               $model = 'App\Models\RollProduct';
               break;
           case 2:
               $model = 'App\Models\ZebraProduct';
               break;
           case 3:
               $model = 'App\Models\VertProduct';
               break;
           case 4:
               $model = 'App\Models\GorizProduct';
               break;
       }
       return $this->hasMany($model);
   }

Полиморфное manyToMany не совсем подходит, т.к. там нужно для каждого типа продукта прописывать отношение, а у меня каждый заказ относится только с одним типом продукта.
Есть мысль сделать общую модель Product, но туплю...
Подскажите, как быть
У меня похожая ситуация была, в вашем примере если показать, скажем в Order я делал связи rollProducts(), zebraProducts(), vertProducts(), gorizProducts() через morphMany(), далее в нужном контексте проверял тип через isRollProduct(), isZebraProduct(), isVertProduct(), isGorizProduct(). В зависимости от типа, я брал нужную связь
источник

BS

B S in Laravel для начинающих
if ($order->isRollProduct()) {
 $products = $order->rollProducts()
}
источник

ЭБ

Эдуард Баженов... in Laravel для начинающих
B S
У меня похожая ситуация была, в вашем примере если показать, скажем в Order я делал связи rollProducts(), zebraProducts(), vertProducts(), gorizProducts() через morphMany(), далее в нужном контексте проверял тип через isRollProduct(), isZebraProduct(), isVertProduct(), isGorizProduct(). В зависимости от типа, я брал нужную связь
Ну по сути у меня сейчас то же самое делается)
источник

BS

B S in Laravel для начинающих
Хотя, да, тоже самое)
источник

BS

B S in Laravel для начинающих
Другого решения не нашел)
источник

ЭБ

Эдуард Баженов... in Laravel для начинающих
B S
Другого решения не нашел)
Это всё, в принципе, работает, проблема в том, что это отношение можно использовать только после получения модели, т.е. с load работает, а с with нет
источник

BS

B S in Laravel для начинающих
Эдуард Баженов
Это всё, в принципе, работает, проблема в том, что это отношение можно использовать только после получения модели, т.е. с load работает, а с with нет
В моем случае, с with прекрасно работал
источник

ЭБ

Эдуард Баженов... in Laravel для начинающих
B S
В моем случае, с with прекрасно работал
Попробую применить ваш метод, спасибо за информацию
источник

BS

B S in Laravel для начинающих
Эдуард Баженов
Попробую применить ваш метод, спасибо за информацию
👌🏻👌🏻
источник