#laravel #eloquent #foreign-keys #primary-key
Вопрос:
Я хочу установить два первичных ключа(id и Android_id) в моей таблице (etat_terminals), поэтому возникла проблема. PS: Android_id-это строка типа, это миграция etat_terminals:
public function up()
{
Schema::create('etat_terminals', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('Android_id');
$table->string('NiveauDeBatterie')->nullable();
$table->string('Memoire')->nullable();
$table->string('Lattitude')->nullable();
$table->string('Longitude')->nullable();
$table->string('Fabriquant')->nullable();
$table->string('Modele')->nullable();
$table->string('VersionSE')->nullable();
$table->timestamps();
$table->softDeletes();
});
}
это миграция терминалов:
public function up()
{
Schema::create('terminals', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('Android_id')->unique();
$table->string('nom')->nullable();
$table->timestamps();
$table->softDeletes();
$table->foreign('Android_id')->references('Android_id')->on('etat_terminals');
});
}
и это моя модель:
class EtatTerminal extends Model
{
use HasFactory;
use SoftDeletes;
protected $table = 'etat_terminals';
protected $fillable = [
'Android_id',
'NiveauDeBatterie',
'Memoire',
'Lattitude',
'Longitude',
'Fabriquant',
'Modele',
'VersionSE'
];
public $timestamp = false;
public function terminal()
{
return $this->belongsTo(Terminal::class);
}
}
class Terminal extends Model
{
use HasFactory;
use SoftDeletes;
protected $fillable = [
'Android_id',
'nom'
];
public $timestamp = false;
public function etats_terminal()
{
return $this->hasMany(EtatTerminal::class);
}
}
ошибка в том, что :
SQLSTATE[42000]: [Microsoft][Драйвер ODBC 17 для SQL Server][SQL Server]В ссылочной таблице «etat_terminals» нет первичных или потенциальных ключей, соответствующих списку столбцов ссылок во внешнем ключе «terminals_android_id_foreign». (SQL: измените таблицу «терминалы», добавьте ограничение «terminals_android_id_foreign», внешний ключ («Android_id») ссылается на «etat_terminals» («Android»))
Комментарии:
1. Попробуйте перенести:свежо — как я вижу по ошибке — вы меняете ключ на иностранном с Android на Android_id
2. я попробовал мигрировать:свежо, но это та же ошибка