如何在laravel 5.3中获取唯一的主键

时间:2017-02-13 12:51:39

标签: laravel

我有这个表,这是我对同一个

的迁移
        $table->increments('id');
        $table->integer('voucher_id');
        $table->integer('voucher_item_id');
        $table->integer('voucher_item_quantity');
        $table->integer('voucher_dealer');
        $table->integer('voucher_item_main_category');
        $table->integer('voucher_item_sub_category');
        $table->integer('voucher_type');
        $table->timestamps();
        $table->softDeletes(); 

这是模型

use softDeletes;
use Notifiable;
protected $primaryKey = 'voucher_id';    
protected $table = 'vouchers';

现在voucher_id是primary key .. 并且它可以是多行的相同数字.. 像这样

id    voucher_id   item_total  
1     1             15
2     1             16
3     1             17

现在在页面vouchers.index中,它将显示三行id,1 id,2 id,3 如何让Laravel从主键中删除重复,并仅使用重复中的一个数字 以及如何在一个表格中建立one-to-many关系 喜欢 select * from vouchers where voucher_id=1

2 个答案:

答案 0 :(得分:1)

使列唯一:

$table->integer('voucher_id')->unique();`

但如果您只需要voucher_id作为该表的主键,我建议您删除id列并添加以下内容:

$table->integer('voucher_id');
$table->primary('voucher_id');

这样,您将voucher_id作为主键,它将是一个唯一值。

您的迁移将是:

$table->integer('voucher_id');
$table->primary('voucher_id');
$table->integer('voucher_item_id');
$table->integer('voucher_item_quantity');
$table->integer('voucher_dealer');
$table->integer('voucher_item_main_category');
$table->integer('voucher_item_sub_category');
$table->integer('voucher_type');
$table->timestamps();
$table->softDeletes(); 

答案 1 :(得分:1)

像这样更改您的迁移:

    $table->integer('voucher_id');
    $table->primary('voucher_id');
    $table->integer('voucher_item_id');
    $table->integer('voucher_item_quantity');
    $table->integer('voucher_dealer');
    $table->integer('voucher_item_main_category');
    $table->integer('voucher_item_sub_category');
    $table->integer('voucher_type');
    $table->timestamps();
    $table->softDeletes();