laravel - Eloquent withtrashed() 用于在急切加载查询上进行软删除 - Laravel 5.1

标签 laravel laravel-5

我正在尝试使用 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();
}

订单 Controller :

/**
 * 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();

dd($订单);显示一个空的客户端
#relations: array:1 [
   "client_withtrashed" => null 

有任何想法吗?我决定采用上面的解决方案,因为我无法使用 withTrashed() 来处理我急切的查询 $order = Order::with('client_withtrashed')->withTrashed()

最佳答案

好吧,您不能在关系上定义它,但是您可以在急切加载时添加约束:

$order = Order::with(['client' => function ($query) {
        $query->withTrashed();
    }])
    ->where('id', '=', $id)
    ->firstOrFail();

您可以检查急切加载约束 in the docs

编辑:

您可以定义 withTrashed() 在您的关系中,只需确保您的模型使用 SoftDeleteTrait。
use Illuminate\Database\Eloquent\SoftDeletingTrait;

class Client extends Eloquent {
    use SoftDeletingTrait;

}

关于laravel - Eloquent withtrashed() 用于在急切加载查询上进行软删除 - Laravel 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33900124/

相关文章:

laravel-5 - 注册商中的 Laravel recaptcha 验证不起作用

php - 如何测试验证错误在 laravel 单元测试中抛出确切的错误和消息

php - 如何在 Laravel 中使用 php artisan 创建数据库 View 的迁移?

php - Laravel Bus Batch 待处理作业为负数

php - 如何在Laravel 5.8中扩展或制作自定义PasswordBroker sendResetLink()方法?

javascript - 有没有办法在 HTML 中将 PHP 对象作为 JavaScript 参数传递?

php - 缓存与。在 Laravel 中直接从数据库查询

php - Laravel Nova 找不到某些模型

php - Laravel 返回一条记录,其中最大值

laravel-5 - Laravel 中的电子邮件验证规则?