Laravel,检查 data/record 是否存在于任何相关的 table

Laravel, check if data/record exists in any related table

也许有人会帮助我。

数据库结构:

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);
}

我需要检查 data/record 是否存在于任何相关 table 中。

像这样:

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
}

但这是两个查询,我需要一个漂亮的查询:)

因此,我需要在单击按钮 "Delete user" 时,在删除之前,我检查 data/record 是否存在于任何相关的 table 中,如果为真,它将显示警告有关删除相关 data/record(来自 storage_items 或 archive_objects)的消息,否则它将仅删除用户(来自用户)。

试试这个 hasorWhereHas

例如:

if (User::has('archiveObject')-orWhereHas('storageItem')->find(1)->count()) {
    //exists
}

我试过另一个密码

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)

试试这个:

User::where(function($query) { 
    $query->has('storageItem')
        ->orHas('archiveObject');
})->find(1);