У меня есть следующие миграции, чтобы создать мой таблицы базы данных MySQLLaravel/MySql Уникальная строка, основанная на идентификаторе?
public function up()
{
Schema::create('project_auth_keys', function (Blueprint $table) {
$table->increments('id');
$table->integer('project_id')->unsigned();
$table->string('key', 800);
$table->string('first_name', 80);
$table->string('last_name', 80);
$table->timestamps();
// link project id with real project id
$table->foreign('project_id')->references('id')->on('projects');
});
}
Теперь то, что я хочу ВЗ выполнить это сделать «ключ» «уникальный» ... Но я знаю, что я могу сделать это, просто изменив
$table->string('key', 800)->unique();
Но я не хочу, чтобы он был уникальным для всей таблицы. Я хочу сделать его уникальным на основе project_id.
Например, запись с project_id из 1 и запись с project_id из 2 могут иметь один и тот же ключ, однако не может быть двух одинаковых ключей в одном и том же project_id.
Является ли это чем-то, что я могу сделать в MySQL или мне нужно будет сделать это, как правило, в моем контроллере? Я могу сделать это в своем контроллере не проблема, но я предпочел бы сделать это в своей базе данных, если это возможно.
EDIT
Пробовал добавлять
$table->primary(array('project_id', 'key'));
Добавлена правильно ниже $ table-> первичный (массив ('project_id', 'ключ'));
Однако после этого я получаю сообщение об ошибке при попытке выполнить миграцию.
Звучит так, как будто вы хотите создать составной ключ, включающий как project_id, так и ключ, кроме как внешний ключ, а не первичный ключ. – SLin
почему бы вам не создать 2 таблицы. Один для идентификатора проекта, а затем один для ключа, связанного с первичным ключом? (я не уверен, почему вы хотели бы сделать это вообще, поэтому я не уверен, как бы я написал это точно ...но это идея) –