我正在尝试使用withTrashed()进行急切加载.我在我的模型中创建了一个新的_withtrashed函数,但查询返回时我的客户端为NULL
客户端型号:
// Client
public function client()
{
return $this->belongsTo('App\Client');
}
// Client (withtrashed for soft deletes)
public function client_withtrashed()
{
return $this->belongsTo('App\Client')->withTrashed();
}
Run Code Online (Sandbox Code Playgroud)
订单管理员:
/**
* Show order.
*/
public function show($id)
{
$order = Order::with('client_withtrashed') ---> it works normally with: Order::with('client') , except I don't get the soft deleted rows
->where('id', '=', $id)
->firstOrFail();
Run Code Online (Sandbox Code Playgroud)
DD($顺序); 显示一个空客户端
#relations: array:1 [
"client_withtrashed" => null
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我决定使用上面的解决方案因为我无法使用toTrashed()来处理我的急切查询 $order = Order::with('client_withtrashed')->withTrashed()
那么你不能在关系上定义它,但是你可以在急切加载时添加约束:
$order = Order::with(['client' => function ($query) {
$query->withTrashed();
}])
->where('id', '=', $id)
->firstOrFail();
Run Code Online (Sandbox Code Playgroud)
您可以在文档中检查急切的加载限制
您可以在关系上定义withTrashed(),只需确保您的模型使用SoftDeleteTrait.
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Client extends Eloquent {
use SoftDeletingTrait;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7718 次 |
| 最近记录: |