【发布时间】:2021-07-23 01:06:10
【问题描述】:
在 Laravel 中是否有动态 OrderBy a belongsTo?或者这只能在加入时起作用?我想让它尽可能干净,这就是我使用 belongsTo 的原因。
这是我的查询,我遇到的问题是我不知道如何查询关系表。
$users = User::where('company_id', Auth::user()->company_id)
->search(trim($this->search))
->orderBy($this->column,$this->order)
->paginate($this->size);
我的 $columns 变量
$columns = collect(['username'=>'Username',
'email'=>'Email'
]);
我想将companies 表中的name、code 和id 添加到我在$columns 变量中的选项中。
当我尝试通过company.name 订购时,这给了我column not found 的错误
这就是我在前端显示它的方式,因为我在模型中有belongsTo
<td>{{$user->company->id}}</td>
<td>{{$user->company->name}}</td>
<td>{{$user->company->code}}</td>
<td>{{$user->username}}</td>
<td>{{$user->email}}</td>
【问题讨论】:
-
您能澄清一下您要完成的工作以及遇到的问题吗?目前还不是很清楚。您的第一个代码块是 Eloquent 关系方法,似乎与第二个代码块(查询生成器语句)无关,然后第三个代码块是两者中均未使用的变量。
-
我想你在寻找点符号,没有找到关于这个的文档,但是
->orderBy('company.name', $this->order) -
@miken32 我有一张桌子,上面有
User和Company我可以订购的唯一列是来自User的用户名和电子邮件,但我不能按列订购Companyname,code或id如果我使用点符号column not found会出错 -
您需要选择使用 Eloquent 或使用 Query Builder。您正在使用 Query Builder,因此关系与此无关,您正在直接使用数据库结构。您可能没有名为
company的数据库表。请改用companies.name。 -
不工作@miken32 它仍然说找不到列。
标签: php mysql laravel eloquent