php - Laravel 排序关系

标签 php mysql laravel laravel-4

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

我有这个表: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/

相关文章:

PHP json_解码 JSON_ERROR_SYNTAX

php - fatal error : Call to undefined function sqlite_escape_string() in PHP

php - 同一路径(分支)内的最短字符串

mysql - mySQL 不断出错的情况

mysql - 如何在 Laravel 中组合四个查询?

Laravel Cashier - 单个用户的多个订阅

php - 在 Chrome 中调试以查找创建特定 HTML 的 PHP 文件

php - 传输 RFID 标签编号到 mysql

mysql - 用于大量数据(日志记录)的 mysql 引擎是什么?

javascript - Angularjs ng-value for boolean in select 不工作