php - Laravel4.2中如何获取与另一个模型相关但与父模型不直接相关的模型的详细信息

标签 php mysql laravel-4 laravel-4.2

我网站的用户模型如下所示

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;

    protected $table = 'users';

    protected $hidden = array('password', 'remember_token');

    public function answer(){
        return $this->hasMany('Answer','user_id');
    }

    public function supplierranking(){
        return $this->hasMany('Supplierrank','userid','id');
    }
}

现在每个用户都会在排名模型中对一家公司进行排名,如下所示

Class Supplierrank extends Eloquent{
    public function supplier(){
        return $this->belongsTo('Supplier','supplierid','id');
    }

    public function user(){
        return $this->belongsTo('User','userid','id');
    }

}

我能够为用户提供排名详细信息,但我还必须获取已从供应商表中排名的公司的详细信息

看起来像这样

Class Supplier extends Eloquent{
    public function supplierranks(){
        return $this->hasMany('Supplierrank','supplierid');
    }

}

我所做的查询如下所示

$usersandranking = User::where('event','=',$exceleve)->with('supplierranking')->orderBy('id')->get();

它获取用户详细信息和排名,但不获取供应商名称

谁能帮我解决这个问题

最佳答案

为此,您需要使用 hasManyThrough 关系。 Laravel documentation sayshas Many through 关系为通过中间关系访问远程关系提供了便捷的捷径。

例如,User 模型可能通过 Supplierrank 模型拥有许多 Supplier

现在您可以在用户模型中定义一个函数来让所有供应商使用预加载

//In your user model define this function
public function suppliers() {
    return $this->hasManyThrough('Supplier', 'Supplierrank', 'userid', 'supplierid');
}

您的查询现在看起来像什么

$usersandranking = User::where('event','=',$exceleve)->with('supplierranking')->with('suppliers')->orderBy('id')->get();

希望它对您有用。

关于php - Laravel4.2中如何获取与另一个模型相关但与父模型不直接相关的模型的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33864327/

相关文章:

php - 在 Laravel 中对每日统计数据进行分页

mysql - 如何处理存储日期和时间的应用程序中的多个时区?

laravel - 缓存 Redis 'Exception',消息为 'Serialization of ' Closure' is not allowed'

php - Laravel 4 中 Input::flash() 和 Session::flash() 的区别

PHP 使用 proc_open 并捕获 'echo' 命令的标准输出

php - 自动POST数据方法

java - 无法在 IntelliJ IDEA 中连接到 MySQL

laravel - 如何在 Laravel 包中自动运行迁移?

php - Swift异步数据显示卡顿

php - MySQL存在则更新,不存在则插入