简单的laravel一对多关系 - 从两个表中获得结果

时间:2014-05-28 09:19:39

标签: php laravel laravel-4 eloquent

所以我有一个客户端模型和一个风险类别模型。关系如下所示,表格遵循常规约定:

//Client.php
public function riskCategory()
{
    return $this->belongsTo('RiskCategory');
}

//RiskCategory.php
public function clients()
{
    return $this->hasMany('Client');
}

我想通过id查询客户端,同时获取风险类别数据。

如果我使用Client::find($id);,我会在clients表中获取该ID的所有字段,如果我Client::find($id)->riskcategory;,我只会获得风险类别表的字段。

有没有办法一次从两个表中获取字段?即如果我用Id 175查询客户端,我会在同一查询中获得该客户的所有客户字段(姓名,年龄,地址等)和风险类别?

2 个答案:

答案 0 :(得分:5)

您可以通过多种方式将风险类别中的数据添加到用户。取决于您希望如何使用它。

将客户端数据用作数组:

// get the client with ID 2 and eager load the riskcategory relation.
$client_data = Client::with('riskcategory')->find(2)->toArray();

将客户数据用作Eloquent:

// get the client with ID 2 and eager load the riskcategory relation.
$client = Client::with('riskcategory')->find(2);

有关预先加载的详细信息:Eager loading info

答案 1 :(得分:1)

只需使用变量

$client = Client::with('riskCategory')->find($id); // eager loading
echo $client->name;
echo $client->riskcategory;