Задача реализовать функцию скачивания файлов у продуктов. Что делаю
Получаем продукт из базы
$product=$this->product($slug);
Запрос файла из контроллера в трейт.
$file = $this->file($product, $type);
Т.е. я передаю объект продукта целиком.
В трейте:
public function file($product, $type)
{
//Получаем файлы
$files = $this->files($product);
//Получаем файл нужного типа
$file=$files->where('type', $type)
->first();
return $file;
}
public function files($product)
{
$files=$product->files;
return $files;
}
И вот здесь у меня затык. Можно ли вот так передавать целый объект продукта по цепочке методов? Или будет лучше передать slug и сделать в трейте дублирующий запрос БД для получения продукта?
Например
В контроллере:
$file = $this->file($product_slug, $type);
В трейте:
public function product($product_slug)
{
$product=Product::where('slug', $product_slug)
->first();
return $product;
}
public function file($product_slug, $type)
{
$files = $this->files($product);
$file=$files->where('type', $type)
->first();
return $file;
}
public function files($product_slug)
{
$product=$this->product($product_slug);
$files=$product->files;
return $files;
}
Сразу напишу: я новичок, пытаюсь разобраться в основах, в данный момент на стадии начального изучения поэтому и спрашиваю основы)