gpt4 book ai didi

php - 如何在通过 Laravel Eloquent 方法连接的元素上使用 orderby

转载 作者:行者123 更新时间:2023-11-29 17:52:15 25 4
gpt4 key购买 nike

问题是查询无法找到应该与 Laravel Eloquent 中的方法WITH 连接的特定方法(特定方法、特定模型、特定模型、特定方法等...)。有什么想法如何解决吗?我的代码:

//SpecificModel
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class SpecificModel extends Model {

protected $guard_name = 'web';
protected $table = 'SpecificTable';
protected $guarded = ['id'];

public function specificMethod(){
return $this->belongsTo('App\Models\AnotherModel','AnotherModel_id');
}
}


//AnotherModel
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class AnotherModel extends Model {

protected $guard_name = 'web';
protected $table = 'AnotherTable';
protected $guarded = ['id'];
}

//Query method
$model = app('App\Models\SpecificModel');
$query = $model::with('specificMethod:id,title');
$query = $query->orderBy('specific_method.title','desc');
return $query->get();


//Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column
'"specific_method.title"' in 'order clause' (SQL: select * from
`SpecificModel` where `SpecificModel`.`deleted_at` is null order by
`specific_method`.`title` desc)

最佳答案

发生这种情况的原因是,belongsTo 关系没有按照您的预期执行 join 查询(正如您从收到的错误中看到的那样)。它执行另一个查询来获取相关模型。因此,您将无法通过相关模型列来订购原始模型。

基本上,发生了 2 个查询:

  1. 使用 SELECT * from originalModel ...* 获取原始模型

  2. 使用 SELECT * from relatedModel where in id (originalModelForeignKeys) 获取相关模型

然后 Laravel 施展一些魔法,将第二个查询中的模型附加到第一个查询中的正确模型上。

您将需要执行实际的 join能够按照您想要的方式订购。

关于php - 如何在通过 Laravel Eloquent 方法连接的元素上使用 orderby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49212466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com