也许有人会帮助我。
数据库结构:
users
id, name
storage_items
id, name, user_id
archive_objects
id, name, user_id
在用户模型中,我有:
public function storageItem()
{
return $this->hasOne(StorageItem::class);
}
public function archiveObject()
{
return $this->hasOne(ArchiveObject::class);
}
我需要检查任何相关表格中是否存在数据/记录。
这样的事情:
if (User::has('storageItem')->orHas('archiveObject')->find(1)->count()) {
//exists
}
这有效:
if (User::has('storageItem')->find(1)->count()) {
//exists
}
这也是:
if (User::has('archiveObject')->find(1)->count()) {
//exists
}
但这是两个查询,我需要一个漂亮的查询:)
因此,我需要当我点击“删除用户”按钮,在删除之前,我检查数据/记录是否存在于任何相关表中,如果为真,它将显示有关删除相关数据/记录的警告消息(来自storage_items或archive_objects),否则它将只删除用户(来自用户)。
答案 0 :(得分:1)
试试这个:
User::where(function($query) {
$query->has('storageItem')
->orHas('archiveObject');
})->find(1);
答案 1 :(得分:0)
试试这个has
和orWhereHas
例如:
if (User::has('archiveObject')-orWhereHas('storageItem')->find(1)->count()) {
//exists
}
答案 2 :(得分:0)
我尝试过其他代码
User::whereHas('archiveObject', function() {})->orWhereHas('storageItem', function() {})->find(2)
但它与此类似
User::has('archiveObject')->orHas('storageItem')->find(2)
我有这个结果
{
"id": 1,
"username": "admin",
"created_at": "2016-02-05 11:45:12",
"updated_at": "2016-03-20 15:12:15"
}
而不是
{}
结果" id":1,我应该有这个
User::has('archiveObject')->orHas('storageItem')->find(1)