在这种情况下,如何获得最佳实践,或者从不同表中获取数据的效果如何?
表格代理
表格属性
表格交易
要获得公司ID 5000的所有属性,我可以:
将一个company_id列添加到属性和事务中,然后我进行以下查询:
$properties = Property::where('company_id', 5000)->get();
$transactions= Transaction::where('company_id', 5000)->get();
OR SQL
SELECT * FROM transactions WHERE company_id = 5000;
遍历表并获取数据:
$properties = Property::whereHas('agent', function($query){
$query->where('company_id', 5000);
})->get();
$transactions = Transaction::whereHas('property', function($query){
$query->whereHas('agent', function($q){
$q->where('company_id', 5000);
});
})->get();
OR SQL
SELECT * FROM transactions T
LEFT JOIN properties P ON T.property_id = P.id
LEFT JOIN users U ON P.added_by = U.id
WHERE U.company_id = 5000;
在我的示例中,我使用了PHP和Eloquent ORM,但示例可以与纯MYSQL或任何其他语言一样。谢谢。
更新
这是用于创建的SQL。