users
- id
- name
- company_id
companies
- id
- company_name
watched_objects
- id
- user_id
- object_id
- type
现在我想所有看过公司的用户。
所以查询应该长相:
SELECT
companies.*
FROM companies
JOIN watched_objects ON watched_objects.object_id = companies.id
WHERE watched_objects.user_id = 1
我应该怎样定义的关系?
我试试这个:
class User
{
public function watched()
{
return $this->hasManyThrough('App\Company', 'App\WatchedObject', 'user_id', 'id');
}
}
但查询是:
SELECT
companies.*,
watched_objects.user_id
FROM companies
INNER JOIN watched_objects ON watched_objects.id = companies.id
WHERE watched_objects.user_id = 1
我怎样才能改变watched_objects.id
到watched_objects.object_id
。
我通常在这种情况下,数据库视图,特别是如果你要经常读取这些数据。(我怀疑你会) –
查看是不是我要什么存档。这种方法使应用程序混乱,我不会混合不同的数据库层。 –
您可以显示您的雄辩查询,但拍摄'返回$ this-> hasManyThrough('App \ Company','App \ WatchedObject','user_id','id') - > where('type','=' 'company');' – cssBlaster21895