我需要两个复合主键,只有一个应该是AUTO INCREMENT到目前为止我尝试过的:

// first try
Schema::create("kitchen", function($table) {
                $table->increments('id');
                $table->integer('restaurant_id');
                $table->primary(array('id', 'restaurant_id'));
                $table->string('name');
            });
// second try
 Schema::create("kitchen", function($table) {
                $table->increments('id');
                $table->integer('restaurant_id');
                $table->primary('restaurant_id');
                $table->string('name');
            });

没有办法。错误信息:
[Exception]
SQLSTATE[42000]: Syntax error or access violation: 1068 Multiple primary ke
y defined (SQL: alter table
厨房add primary key kitchen_restaurant_id
_primary(
restaurant_id )) (Bindings: array (
))

没有Schema构建器的解决方案:首先,我需要添加两个复合主键,然后需要制作一个AUTO INCREMENT,但我认为Schema构建器无法做到这一点。

注意:我可以使用 SQL这样做,我的意思是MySQL没问题

有什么建议?

摘要:

我需要的是

http://oi39.tinypic.com/es91ft.jpg

使用Schema构建器

最佳答案

您可以在未准备好的方法的帮助下完成此操作:

Schema::create("kitchen", function($table) {
    $table->increments('id');
    $table->integer('restaurant_id');
    $table->string('name');
});

DB::unprepared('ALTER TABLE `kitchen` DROP PRIMARY KEY, ADD PRIMARY KEY (  `id` ,  `restaurant_id` )');

经过测试,可以正常工作!

我知道已经晚了,您可能已经继续前进,但是其他人可能会遇到这个问题:)

关于php - 组合键laravel模式构建器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17065112/

10-10 08:29