Size: a a a

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

2020 October 27

SC

Sergey Chizhik in Laravel для начинающих
Вот здесь ошибка
источник

VY

Vladimir Yefremov in Laravel для начинающих
𝚂𝚘𝚍𝚋𝚛𝚘𝚒𝚕🧸
ребят, как исправить? буду благодарен за помощь
ты не отдаешь $user во вью
источник

АМ

Александр Максин... in Laravel для начинающих
Владимир
Пытаюсь сделать кофейные рецепты. Напиток (Drink) состоит из ингредиентов: кофе (Coffee) и вода (Water). У напитка есть название и описание, у ингредиентов - свои характеристика. Каждый ингредиент входит в напиток 1 раз.
Как бы всё правильно и всё получатеся, но ведь это, выходит, many-to-many связь, хотя каждый ингредиент в напитке один, и в итоговом json'е каждый ингредиент представлен массивом, а не одной "штукой". Меня не покидает чувство, что я что-то сделал неправильно.

Таблицы
coffees
id, weight, grind

waters
id, quantity, temperature

drinks
drink_name, description, ingredient_type, ingredient_id

class Drink extends Model {
   public function coffees(): \Illuminate\Database\Eloquent\Relations\MorphToMany {
       return $this->morphedByMany(Coffee::class, 'ingredient');
   }

   public function waters(): \Illuminate\Database\Eloquent\Relations\MorphToMany {
       return $this->morphedByMany(Water::class, 'ingredient');
   }
}
class Coffee extends Model {
   public function drinks(): \Illuminate\Database\Eloquent\Relations\MorphToMany {
       return $this->morphToMany(Drink::class, 'ingredient');
   }
}
class Water extends Model {
   public function drinks(): \Illuminate\Database\Eloquent\Relations\MorphToMany {
       return $this->morphToMany(Drink::class, 'ingredient');
   }
}

Сидер

Контроллер
public function show(string $recipe){
       return Drink::with( 'coffees', 'waters')->findOrFail($recipe);
   }

Результат (JSON)
json
{
"name": "espresso",
"coffees": [
 {
  "id": 1,
  "weight": 7,
  "grind": "fine",
  "pivot": {
   "drink_name": "espresso",
   "ingredient_id": 1,
   "ingredient_type": "App\\Models\\Coffee"
  }
 }
],
"machines": [],
"milks": [],
"waters": [
 {
  "id": 1,
  "quantity": 30,
  "temperature": 90,
  "pivot": {
   "drink_name": "espresso",
   "ingredient_id": 1,
   "ingredient_type": "App\\Models\\Water"
  }
 }
]
}
можно добавить сущность ingredient
drink hasMany ingredients
ingredient One To One (Polymorphic)  (coffee, water ...)
тогда будет массив ингридиентов,
либо оставить как есть но преобразовывать результат к удобному виду - чтобы там был массив ингридиентов
источник

В

Владимир in Laravel для начинающих
Александр Максин
можно добавить сущность ingredient
drink hasMany ingredients
ingredient One To One (Polymorphic)  (coffee, water ...)
тогда будет массив ингридиентов,
либо оставить как есть но преобразовывать результат к удобному виду - чтобы там был массив ингридиентов
Как вариант да, попробую
источник

𝚂

𝚂𝚘𝚍𝚋𝚛𝚘𝚒𝚕🧸... in Laravel для начинающих
Vladimir Yefremov
ты не отдаешь $user во вью
Спасибо, решил.
источник

AR

Anton Reviakin in Laravel для начинающих
чет не помогает гугл... есть belongTo связь с Products таблицей,
$item->product->withTrashed()->first() не помогает, все равно выбирает deleted_at is null
источник

к

коля in Laravel для начинающих
vue.кoмпонент берет данные из контроллера, можна ли как-то redirect на другой роутур,из этого контроллера,во время обработки запроса от vue.компонента
источник

A

Andrey in Laravel для начинающих
Anton Reviakin
чет не помогает гугл... есть belongTo связь с Products таблицей,
$item->product->withTrashed()->first() не помогает, все равно выбирает deleted_at is null
Создавай отдельное отношение с withTrashed
источник

A

Andrey in Laravel для начинающих
Anton Reviakin
чет не помогает гугл... есть belongTo связь с Products таблицей,
$item->product->withTrashed()->first() не помогает, все равно выбирает deleted_at is null
источник

AR

Anton Reviakin in Laravel для начинающих
Пробовал в самом отношении, но требует софтДелит и для основной таблицы

public function product()
{
   return $this->belongsTo(Product::class, 'product_id')->withTrashed();
}
источник

A

Andrey in Laravel для начинающих
Либо грузи связь полностью
product()
источник

АМ

Александр Максин... in Laravel для начинающих
Anton Reviakin
чет не помогает гугл... есть belongTo связь с Products таблицей,
$item->product->withTrashed()->first() не помогает, все равно выбирает deleted_at is null
может тебе нужно  ->onlyTrashed() ?
источник

AR

Anton Reviakin in Laravel для начинающих
Александр Максин
может тебе нужно  ->onlyTrashed() ?
не, мне нужно все
источник

AR

Anton Reviakin in Laravel для начинающих
при сменене статуса заказа "Заказ получен" надо выбрать данные о товаре (вдруг товар был удален пока заказ ехал к покупцу)
источник

АМ

Александр Максин... in Laravel для начинающих
тогда не совсем понятно в чем проблема?
источник

AR

Anton Reviakin in Laravel для начинающих
убрал в связи 2-й параметр - заработало
источник

AR

Anton Reviakin in Laravel для начинающих
не знаю зачем было вставлять product_id, если лара сама понимает стандартное название поля для связи
источник

VY

Vladimir Yefremov in Laravel для начинающих
как вы поступаете, когда нужно в проект подключить фронтендера?
Анонимный опрос
30%
ставите ему проект, создаете и настраиваете окружение
35%
он делает сам, но активно помогаете
10%
он делает сам и вы помогаете немного, нехотя
25%
все делает сам, не помогаете....
Проголосовало: 20
источник

ВШ

Виталий Шутов... in Laravel для начинающих
Vladimir Yefremov
как вы поступаете, когда нужно в проект подключить фронтендера?
Анонимный опрос
30%
ставите ему проект, создаете и настраиваете окружение
35%
он делает сам, но активно помогаете
10%
он делает сам и вы помогаете немного, нехотя
25%
все делает сам, не помогаете....
Проголосовало: 20
Зависит от уровня фронтендера 😊
источник

VY

Vladimir Yefremov in Laravel для начинающих
Виталий Шутов
Зависит от уровня фронтендера 😊
ну, при любом уровне фронту сложно с Ларой....
источник