Как проверить уникальное значение по id в laravel 5.6? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть таблица, т.е. подменю

 Schema::create('submenu', function (Blueprint $table) {
        $table->increments('submenu_id');
        $table->tinyInteger('status')->default(1);
        $table->unsignedInteger('menu_id');
        $table->string('name');
       $table->tinyInteger('order');
        $table->timestamps();

        $table->foreign('menu_id')
            ->references('id')
            ->on('menu')
            ->onDelete('cascade');
    });

В этой таблице мы вводим значение порядка, т.е. 1,2,3,4, в текстовое поле.Здесь порядок должен начинаться с 1 согласно menu_id.Мол, menu_id = 1 и order = 1 и order = 2, но проблема в том, что порядок должен быть уникальным.если в menu_id = 1 уже есть order = 1, то должно отображаться сообщение об ошибке, что «order уже существует».

Теперь у следующего menu_id = 2 также могут быть order = 1 и order = 2Итак, как сохранить уникальное значение в соответствии с menu_id и проверить, содержит ли menu_id порядок или нет?

SubmenuController

   $order = Input::get('order');
        $menu = Input::get('menu_id');
        if($menu->contains($order)){
            echo "exists";die;
        } else {
            echo "no exists";die;
        }

Я использовал это в контроллере, но он не работает...

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете выполнить запрос выбора в контроллере перед выполнением какой-либо операции

   $order = Input::get('order');
    $menu = Input::get('menu_id');
    $var = DB::table('submenu')
     ->select('order','menu_id')
     ->where('order',$order)
     ->where('menu_id',$menu)
     ->first();

  if(!empty($var)){
        //Do Something for Duplicate Entry
    } else {
        //Do Something for Unique Entry;
    }
0 голосов
/ 18 сентября 2018

Создайте составной индекс для обоих столбцов:

Schema::create('submenu', function (Blueprint $table) {
    [...]
    $table->unique(['menu_id', 'order']);
});

В контроллере вы можете обрабатывать дублирующиеся комбинации, например:

try {
    Submenu::create($data);
} catch(Exception $exception) {
    // This combination of menu_id and order already exists.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...