Удалить связанную строку Laravel [Неизвестный столбец 'users.pasien_id' в 'предложении where'] - PullRequest
0 голосов
/ 02 июля 2019

Я попытался удалить соответствующую строку.

Pasien table dam Таблица пользователей

Когда я удаляю строку в таблице pasien, строки, которые связаны с таблицей пользователей, также должны бытьудален.Тем не менее, это показывает ошибку, которая приводит меня в замешательство, неправильно ли я ввел в модель ownTo и hasMany.

Я пытался отменить ее (ownTo и hasMany), но это все равно ошибка.Какова правильная строка кода для этой проблемы?

Таблица пользователей

  • id
  • имя
  • электронная почта
  • пароль

Pasien Table

  • id
  • iduser
  • status

Pasien модель

public function users()
    {
        return $this->hasMany('App\Users');
    }
public static function boot()
  {
    parent::boot();
      static::deleting(function($pasien) {
        $pasien->users()->delete();
      });
  }

Модель пользователя

public function pasien()
    {
        return $this->belongsTo('App\Pasien');
    }

Pasien контроллер

public function destroy(Pasien $pasien)
    {
        $pasien->delete();

        return redirect()->route('pasien.index')
        ->with('success','Pasien deleted successfully');
    }

1 Ответ

0 голосов
/ 02 июля 2019

Проблема в том, что внешний ключ iduser в таблице Pasiens не соответствует соглашению, которому следует laravel (он ожидает, что имя столбца будет user_id, так как оно указывает на Users таблицу)

Как уже упоминалось в документах Eloquent: отношения

По соглашению, Eloquent возьмет имя "случай змеи" модели-владельца и добавит к ней _id.

Чтобы решить эту проблему, вы должны указать свое имя внешнего ключа для belongsTo и hasMany, чтобы laravel мог правильно определить связь между двумя таблицами.

В Пользователь модель

public function pasien()
{
    return $this->belongsTo('App\Pasien', 'iduser');
}

А в Pasien модель

public function users()
{
    return $this->hasMany('App\Users', 'iduser');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...