В моем проекте у меня есть список заказов клиентов. У каждого заказа есть поле id_carrier для поиска имени оператора (например, dhl, ups et c.). Проблема в том, что мне нужно выбрать имя оператора с помощью функции getName () из модели носителя.
Поэтому мой запрос выглядит так:
public function loadOrders()
{
$orders = Order::select('id', 'reference', 'created_at','total_value')->with(['carrier' => function($carrier){
$carrier->getName();
}])->paginate(20);
return $orders;
}
Сообщение об ошибке:
message: "Call to undefined method Illuminate\Database\Eloquent\Relations\HasOne::getName()"
Порядок модели:
public function carrier()
{
return $this->hasOne('App\SupremeShop\Models\Carrier', 'id', 'id_carrier');
}
Несущая модели
public function getName()
{
return $this->translation->where('id_lang', 1)->first()->name;
}
Итак, мой запрос возвращает результаты для ajax, и он используется для обработки данных. Поэтому я передаю json как конечный sh результат. Нет проблем с выбором поля базы данных classi c - проблема возникает только тогда, когда мне нужно использовать отношение для получения имен операторов.
Если я делаю что-то наподобие списка заказов, и вызываю $ order-> carrier-> getName () я получу имя оператора без проблем. Но в моем запросе я использую getName () в контексте 20 разбитых на страницы результатов, и я не уверен, как создать правильный запрос sql.
В каждом заказе есть один носитель. Каждый перевозчик имеет несколько переводов. Функция GetName возвращает перевод по умолчанию.