Есть две таблицыметод Laravel модель со значением по умолчанию
- продукты
- фотографии (имеет PRODUCT_ID приоритет)
В моей модели продукта я могу получить все фотографии с:
public function pictures(){
return $this->hasMany('App\Picture');
}
Теперь я хочу создать в продукте, чтобы получить основной рисунок url (наименьшее значение приоритета с product_id изображения), а если нет результата, возвращайте значение по умолчанию. Я пробовал:
public function mainpicture(){
$picture = $this->pictures()->orderBy('priority','desc')->first();
if($picture == null)
return 'default/default.png';
return $picture->url;
}
Это дает ошибку:
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
При возврате значения она никогда от типа Осветите \ Database \ Eloquent \ Отношения \ Relation, но только в URL. Как я могу сделать метод для получения mainpicture или значения по умолчанию?
Причина, по которой я хочу создать эту функцию: потому что она мне нужна во многих точках зрения и не хочет вставлять один и тот же код во все виды. В настоящее время во всех видах, где мне нужно mainpicture я использую:
@if(isset($product->pictures[0]))
{!! Html::image('/images/product/'.$product->id.'/thumb/'.pictures[0]->url, 'Product image', array('class'=> ' img-responsive')) !!}
@else
{!! Html::image('/images/product/default/default.png', 'No picture found', array('class'=> ' img-responsive')) !!}
@endif
Это очень спагетти, как и функция была бы гораздо лучше.
Я мог бы создать глобальную вспомогательную функцию, но мне любопытно, могу ли я добавить ее в свою модель.
Спасибо за предложение.Проблема была бы в том, что мне нужно добавить ее к каждой функции контроллера для представления, где она мне нужна, было бы намного проще, если бы я мог вызвать $ product-> mainpicture в представлениях, где мне это нужно. –
вы можете позвонить в $ product-> mainpicture. попробуйте – codegeek
Я добавил его к моему мнению, как {!! $ product-> mainpicture-> url !!} Я получаю сообщение об ошибке «Попытка получить свойство не-объекта» также у меня все равно не будет значения по умолчанию, если результата нет. –