我需要能够获得包括其软删除元素在内的Models Relationship,但仅限于此1个实例。我不想更改模型,以便每次使用关系时也返回所有软删除的记录。
我该如何实现?
用户模型
class User extends Authenticatable
{
public function contacts(){
return $this->hasMany('App\Contacts','user_id','id');
}
}
控制器
$user = User::findOrFail($id);
//Need to be able to get the trashed contacts too, but only for this instance and in this function
$user->contacts->withTrashed(); //Something like this
return $user;
我怎么只能在控制器内部这次获得被废弃的行?
谢谢
答案 0 :(得分:4)
您可以通过多种方式使用withTrashed
方法。
要将通话与您的关系相关联,您可以执行以下操作:
public function roles() {
return $this->hasMany(Role::class)->withTrashed();
}
要即时使用相同的内容:
$user->roles()->withTrashed()->get();
对于您的特殊情况:
$user->contacts()->withTrashed()->get();
答案 1 :(得分:0)
您可以执行以下操作:
$user = User::findOrFail($id);
$user->contacts()->withTrashed()->get(); //get all results
return $user;
使用()
调用关系时,可以附加withTrashed()
方法。之后,您需要get()
结果。
答案 2 :(得分:0)
查看{{3}}上的Laravel文档:
//The withTrashed method may also be used on a relationship query:
$flight->history()->withTrashed()->get();
问题是使用$user->contacts
向用户返回联系人的相关记录的集合,而$user->contacts()
将进行新的查询。