Как я могу установить первичный ключ для двух столбцов в laravel?

#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. я попробовал мигрировать:свежо, но это та же ошибка