如何在用户模型中以任务为中心来限制仅未完成的任务?

问题描述 投票:0回答:1

在 laravel 10 网站上我有 3 个相关表:

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    ...
    $table->timestamp('created_at')->useCurrent();
});


Schema::create('tasks', function (Blueprint $table) {
    $table->id();
    $table->foreignId('creator_id')->references('id')->on('users')->onUpdate('RESTRICT')->onDelete('CASCADE');
    $table->boolean('completed')->default(false);
    ...
    $table->timestamp('created_at')->useCurrent();
    $table->timestamp('updated_at')->nullable();
});


Schema::create('task_user', function (Blueprint $table) {
    $table->id();
    $table->unsignedBigInteger('user_id')->unsigned()->index();
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

    $table->foreignId('task_id')->references('id')->on('tasks')->onUpdate('RESTRICT')->onDelete('CASCADE');
    $table->timestamp('created_at')->useCurrent();
    $table->unique(['user_id', 'task_id']);
});

我在 app/Models/User.php 中定义了枢轴关系:

public function tasks(): belongsToMany {
        return $this->belongsToMany(Task::class);
}

但是在这种关系中我如何才能仅限于未完成的任务,其中

tasks.completed = false

"laravel/framework": "^10.48.7",

提前致谢!

laravel eloquent pivot-table
1个回答
0
投票

我对 Laravel 很陌生,但在 Laravel 文档中,对于这样的情况,apperas 是 wherePivot() 方法:

public function tasks(): belongsToMany {
        return $this->belongsToMany(Task::class)->wherePivot('completed',false);
}

https://laravel.com/docs/10.x/eloquent-relationships#filtering-queries-via-intermediate-table-columns 据我了解,这可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.