Красноречивое отношение один-ко-многим в laravel 5.7 - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь получить данные названия страны, поэтому,

У меня есть две модели

1) пользователей модели

пользователей:

class Users extends Model
{


    protected $fillable = ['fname','lname','email','password','address','state','city'];


    public function address1()
    {
        return $this->hasOne('App\Addresses');
    }
}

2) адреса модели

адреса:

class addresses extends Model
{
    protected $fillable = ['user_id','country'];

    public function user()
    {
        return  $this->belongTo('App\users');
    }
}

сейчас я получаю вывод - это ошибка:

SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'address.users_id' в 'предложении where' (SQL: выберите * из addresses, где addresses. users_id = 5 и addresses. users_id не равно нулю и addresses. id = 2 ограничения 1) (Просмотр: /Applications/XAMPP/xamppfiles/htdocs/demo/resources/views/profiles.blade.php)

пожалуйста, решите мою проблему.

1 Ответ

0 голосов
/ 05 октября 2018

Прежде всего, ошибка очень ясно показывает, в чем проблема - у вас нет таблицы users_id в таблице addresses.

Вы не показали, как именно вы пытаетесь использовать этиотношения, но я считаю, что проблема здесь:

 public function user()
 {
    return $this->belongTo('App\users');
 }

Поскольку вы используете имена моделей, которые не соответствуют соглашению Laravel, вы должны передать имя столбца внешнего ключа, например:

 public function user()
 {
    return $this->belongTo('App\users', 'user_id');
 }

Здесь user_id это просто пример.Я не знаю, каково реальное имя столбца в вашей таблице, которое определяет отношение к пользователю.

Однако я настоятельно рекомендую вам использовать соглашения Laravel и PHP:

  1. класс должен начинатьсяс заглавной буквой, поэтому вместо addresses это должно быть скорее Addresses (не забудьте иметь имя файла с точно таким же регистром, например, Addresses.php`
  2. Модели должны быть существительными в единственном числе, поэтому вместо адресовили Users это должен быть скорее Address или User (еще раз убедитесь, что если вы решите изменить его, вы также измените имя файла)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...