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)的消息,否则它将仅删除用户(来自用户)。
试试这个 has
和 orWhereHas
例如:
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);
也许有人会帮助我。
数据库结构:
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)的消息,否则它将仅删除用户(来自用户)。
试试这个 has
和 orWhereHas
例如:
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);