Laravel如何拒绝重复数据库中的两列

时间:2015-10-09 13:23:27

标签: php validation laravel laravel-5.2

我有同样的表:

id | u_id | f_id

我插入了一些数据:

id   = 1;
u_id = 5;
f_id = 8;

我的问题是,如果他试图插入相同的数据,我该如何拒绝用户插入?

1 个答案:

答案 0 :(得分:0)

每当首次保存新模型时,creatingcreated事件都会触发。如果数据库中已存在模型且调用了save方法,则会触发updating / updated个事件。但是,在这两种情况下,都会触发saving / saved事件。

例如,让我们在service provider中定义一个Eloquent事件监听器。在我们的事件监听器中,我们将在给定模型上调用isValid方法,如果模型无效,则返回false。从Eloquent事件侦听器返回false将取消save / update操作。

<?php

namespace App\Providers;

use App\YourModel;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        YourModel::saving(function ($yourModel) 
        {
            if ( ! $yourModel->isValid() ) 
                return false;

        });
    }
}

在你的模型中添加isValid()函数,在这个函数中你将添加你的条件:

public function isValid()
{
    if( $this->u_id = 5 && $this->f_id == 8)
        return false;
    else
        return true;
}

注意:我想id会自动增加。

希望这有帮助。

<强> Source