我有一个laraveldb集合,它使用连接检索数据。因此:
public static function getAllClientData(){
return DB::table('clients')
->join('accounts', 'clients.id', '=', 'accounts.client_id')
->join('addresses', 'clients.address_id', '=', 'addresses.id')
->select('clients.*', 'accounts.*', 'addresses.*')
->get();
}
现在我想得到返回的db集合的值。但是,表accounts和clients都包含“comment”列。此列不是同一列,并且包含不同的值。如何遍历返回的db集合并访问/获取指定列的值?
我已经试过了:
foreach($data as $item){
echo $item->addresses.comment;
echo $item->accounts.comment;
}
然而,它不起作用。如何告诉laravel从表地址和表帐户中获取列注解的值?
1条答案
按热度按时间pdkcd3nj1#
你可以用雄辩的方式与你的关系
当你循环通过
$clients
在每次迭代中,您将有一个针对每个客户机的相关地址和帐户的集合另外,您与地址的关系看起来可疑如果一个客户端有一个地址,那么在clients表中有一个地址id是可以的,如果一个客户端有多个地址,那么addresses表应该有一个client\u id作为外键,
如果客户有一个地址
如果客户端有多个地址
对于原始查询,如果两个表的列名称相同,则需要为它们指定唯一的别名
另外,从联合查询中选择所有列也不是一个好主意,只选择您真正需要的列