Laravel雄辩地与Trashed关系

S_R*_*S_R 1 php laravel eloquent laravel-5

我需要能够获得包括其软删除元素的“模型关系”,但仅适用于此1实例。我不想更改模型,以便每次使用关系时,它也会返回所有软删除的记录。

我该如何实现?

用户模型

class User extends Authenticatable
{
  public function contacts(){
    return $this->hasMany('App\Contacts','user_id','id');
  }
}
Run Code Online (Sandbox Code Playgroud)

控制者

$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;
Run Code Online (Sandbox Code Playgroud)

我怎样才能只在控制器内部这次获得被破坏的行?

谢谢

Ali*_*r R 39

with()您还可以通过向方法添加子句来预先加载它们

$user = User
   ::with(['contacts' => fn($q) => $q->withTrashed()])
   ->findOrFail($id);
Run Code Online (Sandbox Code Playgroud)


Pus*_*raj 5

您可以使用withTrashed不同的方法。

要将呼叫与您的关系相关联,可以执行以下操作:

public function roles() {
    return $this->hasMany(Role::class)->withTrashed();
}
Run Code Online (Sandbox Code Playgroud)

要在飞行中使用它:

$user->roles()->withTrashed()->get();
Run Code Online (Sandbox Code Playgroud)

对于您的特殊情况:

$user->contacts()->withTrashed()->get();
Run Code Online (Sandbox Code Playgroud)