Mysql 将原始SQL查询转换为Laravel Eloquent左外部联接

Mysql 将原始SQL查询转换为Laravel Eloquent左外部联接,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,谁能帮我把这个问题转化成雄辩的问题 订单型号:: 型号任务卡:: 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 b

谁能帮我把这个问题转化成雄辩的问题

订单型号:: 型号任务卡::

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

似乎名称空间也有问题,请尝试使用
App\ModelName
而不是
App\Models\ModelName
。并使用英语命名函数/类:)

检查外键是否正确使用。如果您想让它开箱即用,
orders
表应该将
client\u id
作为外键,将
id
作为主键,而
clients
表必须具有主键
id
。然后,此解决方案将起作用:

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

编辑: 为了更好地理解:)在
创建订单\u表中
迁移:

$table->bigIncrements('id');
$table->unsignedBigInteger('client_id');
$table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');
此外,我看不出为什么你的客户只能订购一份。我会在
客户机中使用
模型:

public function orders(){
    return $this->hasMany('App\Order');
}
订单中
型号:

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

这样,您的客户将能够有多个订单,而一个订单将只有一个指定的客户。

嘿,到目前为止您尝试过什么吗?请阅读文档。我试过了。问题是我必须把它作为一个模型,而不是一个数组。在我使用的模型中,函数hasmany/hasOne将您的关系添加到问题中,它可以帮助我们构建查询。公共函数klient(){return$this->hasOne('App\models\Customer','id','klientID')->withTrashed();}您真的需要ifnull语句吗?