Конвертировать необработанный SQL-запрос в Laravel Eloquent левое внешнее объединение - PullRequest
0 голосов
/ 25 сентября 2019

Может кто-нибудь помочь мне превратить запрос в Eloquent?

Заказы моделей :: Модель TaskCard ::

select 
    ifnull(data, o.created_at) as dataZlecenia,o.id, o.nazwa
from  
    orders o
left outer join
    (select max(created_at) as data,order_id from task_cards
group by order_id) as a 
on a.order_id=o.id
order by dataZlecenia desc

1 Ответ

0 голосов
/ 25 сентября 2019

Похоже, что у вас тоже неправильное пространство имен, попробуйте использовать App\ModelName вместо App\Models\ModelName.И используйте английский для именования функций / классов:)

Проверьте, правильно ли используются ваши внешние ключи.Если вы хотите, чтобы он работал только из коробки, таблица orders должна иметь client_id в качестве внешнего ключа и id в качестве первичного ключа, тогда как таблица clients должна иметь первичный ключ id.Тогда это решение будет работать:

public function order(){
    return $this->hasOne('App\Order');
}

через https://laravel.com/docs/5.8/eloquent-relationships

РЕДАКТИРОВАТЬ: для лучшего понимания :) в create_orders_table миграция:

$table->bigIncrements('id');
$table->unsignedBigInteger('client_id');
$table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');

Более того я могуНе вижу причины, по которой у вашего клиента может быть только один заказ.Я бы использовал в Client модели:

public function orders(){
    return $this->hasMany('App\Order');
}

И в Order модели:

public function client(){
   return $this->belongsTo('App\Client');
}

Таким образом, ваш клиент сможет иметь несколько заказов, и заказ будетесть только один назначенный клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...