Куда следует ставить внешний ключ, когда я хочу, чтобы отношения один к одному - PullRequest
0 голосов
/ 28 апреля 2019

Я делаю таблицу адресов и пользователей. Это были бы отношения один к одному. Когда я вижу примеры отношений компании и пользователя один к одному, у компании был внешний ключ, а пользователю не был назначен ключ. Как это решить D?

Фирменный стол

  $table->integer('user_id')->unsigned()->nullable();
  $table->foreign('user_id')->references('id')->on('users');

1 Ответ

0 голосов
/ 29 апреля 2019

Я объясню вашу проблему на примере документа laravel:

Например, модель пользователя может быть связана с одним телефоном .Чтобы определить это отношение, мы помещаем метод телефона в модель Пользователь .Метод phone должен вызвать метод hasOne и вернуть его результат:

Class User {
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

, тогда мы можем получить телефон, принадлежащий пользователю:

$phone = User::find(1)->phone;

Eloquent определяетвнешний ключ отношения на основе названия модели.В этом случае автоматически предполагается, что модель Phone имеет внешний ключ user_id .

Итак, мы можем получить доступ к модели Phone от нашего пользователя .Теперь давайте определим отношение для модели Phone , которая позволит нам получить доступ к пользователю, которому принадлежит телефон.

class Phone 
{
    /**
     * Get the user that owns the phone.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

Вот представление таблиц:

___________                    __________
| User    |                    | Phone   |
|_________|                    |_________|
| id      |                    |   id    |
|_________|                    |_________|
| name    |                    | number  |
|_________|                    |_________|
| lastname|                    | user_id | ----------> foreign key 
|_________|                    |_________|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...