Laravel - 获取多个表的数据

Laravel - Get Data of Multiple Tables

我想从客户和贷款这两个表中创建一个 select。查询(在 MySQL 语法中)将是这样的:

SELECT * FROM loans, clients WHERE loans.status = 1 AND loans.client_id = clients.id;

这是我的模型:

class Client extends Eloquent {
    public function loans()
    {
        $this->hasMany('App\Loan');
    }
}

class Loan extends Eloquent {
    public function clients()
    {
        $this->belongsTo('App\Client');
    }
}

使用eloquent模型的功能如何?

使用 with 方法在一个查询中获取贷款和客户,而不是为每个客户单独查询。

$loans = Loans::with('clients')->where('status', 1)->get();

有关详细信息,请参阅 Eager Loading 上的文档。

这将为您提供一组贷款,每个贷款都包含一组客户。如果你想迭代所有的贷款和客户,你可以使用嵌套循环:

foreach ($loans as $loan) {
    // show loan info
    foreach ($loans->clients as $client) {
        // show client info
    }
}

这就是你想要的

Loans::with('clients')->get();

这里是预先加载的文档
https://laravel.com/docs/5.5/eloquent-relationships#eager-loading