gpt4 book ai didi

php - Laravel 排序关系

转载 作者:可可西里 更新时间:2023-11-01 07:00:10 26 4
gpt4 key购买 nike

如何使用相关表格对结果进行排序?

我有这个表:ClientsManagers(用户表)

客户端.php

<?php

class Client extends Eloquent {
protected $table = 'clients';

public function Manager(){
return $this->belongsTo('User','manager','id');
}
public function Transaction(){
return $this->hasMany('ClientTransaction','client','id');
}
}

Users.php(默认 Laravel 的模型)

我的问题是如何查询要按经理姓名排序的表客户。

到目前为止,这是我的代码:

public function getClients() {
// Sorting preparations
$allowed = array('name','contact','money');
$sort = in_array(Input::get('sort'), $allowed) ? Input::get('sort') : 'name';
$order = Input::get('order') === 'desc' ? 'desc' : 'asc';
// Get Clients from DB
if($sort == 'contact'){
$clients = Client::with(array('Manager' => function($query) use ($order) {
$query->orderBy('name', $order);
}));
} else {
$clients = Client::orderBy($sort, $order)->with('Manager');
}
// Filters
$cname = null;
if(Input::has('cname')){
$clients = $clients->where('name', Input::get('cname'));
$cname = '$cname='.Input::get('cname');
}
// Pagination
$clients = $clients->paginate(25);
// Return View
return View::make('pages.platform.clients')
->with('clients', $clients);
}

如果我尝试按姓名排序,它可以按客户姓名排序,但如果我尝试按联系人排序,则需要按用户(经理)姓名排序。

最佳答案

试试这个。

$clients = Client::join('users as manager', 'manager.id','=','clients.manager')
->orderBy('manager.name', $order)
->select('clients.*') // avoid fetching anything from joined table
->with('Manager'); // if you need managers data anyway

将其放入您的 if 语句 if($sort == 'contact'){/***/}

关于php - Laravel 排序关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25123568/

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