Данные удаления Laravel - SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец - PullRequest
0 голосов
/ 04 ноября 2019

Как исправить проблему с именами внешних ключей в laravel при удалении данных из базы данных. Я изменил имена в отношениях в файле класса, но все еще не работает. Где мне нужно внести изменения? «SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец« kontakt.id »в« предложении где »(SQL: выберите * из kontakt, где kontakt. id = 1 предел 1)»

class User extends Model
{
    public $table = "user";
    public function kontakt(){

     return $this->hasMany('App\kontakt');
    }
}


class kontakt extends Model
{
    public $table = "kontakt";
    public function user(){

        return $this->belongsTo('App\User','id_user','id_kontakt');
    }
}
Schema::create('user', function (Blueprint $table) {
            $table->bigIncrements('id_user');
            $table->string('imie_user');
            $table->string('nazwisko_user');
            $table->string('haslo_user');
            $table->string('email')->unique();
}
Schema::create('kontakt', function (Blueprint $table) {
            $table->bigIncrements('id_kontakt');
            $table->string('imie_kontakt');
            $table->string('nazwisko_kontakt');
            $table->string('opis_kontakt');
            $table->string('miasto_kontakt');
            $table->string('ulica_kontakt');
            $table->string('nr_bloku_kontakt');
            $table->string('nr_mieszkania_kontakt');
            $table->string('telefon_kontakt');
            $table->string('nr_konta_kontakt');
            $table->string('nip_kontakt');
            $table->unsignedBigInteger('id_user');
            $table->foreign('id_user')->references('id_user')->on('user');
        })


 public function deletekontakt($id_kontakt){

    $kontakt = kontakt::find($id_kontakt);
    $kontakt->delete();
    return redirect('kontakty');
}

1 Ответ

1 голос
/ 04 ноября 2019

Eloquent также предполагает, что у каждой таблицы есть столбец первичного ключа с именем id. Вы можете определить свойство $primaryKey для переопределения этого соглашения.

в вашей kontakt модели определяют первичный ключ:

class kontakt extends Model
{
    public $table = "kontakt";
    protected $primaryKey = 'id_kontakt';

    public function user(){

        return $this->belongsTo('App\User','id_user','id_kontakt');
    }
}

также в модели пользователя.

protected $primaryKey = 'id_user';

А для удаления вы также можете использовать метод destroy ().

kontakt::destroy($id_kontakt);
...