Модель отношений Laravel не работает - PullRequest
0 голосов
/ 20 октября 2018

Я работаю над проектом Laravel, но сталкиваюсь с проблемой отношений.

У меня есть CarAddress Model и User Model

в таблице caraddress, у меня есть id, sessionId,

в таблице пользователей, у меня есть id и sessioId.

Код в модели CarAddress

protected $table = 'caraddress';
public $primaryKey ='id';
function users(){
    return $this->belongsTo('App\User','sessionId');
}

Код в пользовательской модели

public function CarAddress(){
    return $this->hasMany('App\CarAddress');
    }

Код контроллера $ carAddress = CarAddress :: with ('users') -> get ();вернуть $ carAddress;

и получить результат:

[
{
"id": 25,
"sessionId": "dqEeucFqkNzSUQtPxqdxqvJbCqyrAuVXVqIf3y6l",
"residentialStatus": "homeowner",
"addressYears": "1",
"addressMonths": "0",
"totalMonths": "12",
"postcode": "SW1A 2AA",
"buildingNumber": null,
"street": "10 Downing Street",
"town": "London",
"county": null,
"country": null,
"buildingName": null,
"userRefference": "FFD",
"created_at": "2018-10-20 22:30:44",
"updated_at": "2018-10-19 20:18:22",
"users": null
}
]

1 Ответ

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

Если вы хотите подключить sessionId в обеих таблицах, вам нужно указать оба ключа:

function users(){
    return $this->belongsTo('App\User','sessionId', 'sessionId');
}

Некоторые другие странности с вашим кодом:

  1. Это очень необычно дляиметь идентификатор и не использовать его в качестве внешнего ключа.Я надеюсь, вы знаете, что вы здесь делаете.
  2. Так как это принадлежит ( один многим), отношения не должны быть множественными.
  3. Вы должны следоватьсоглашения об именах, если это новая база данных для Laravel.(session_id)

Я настоятельно рекомендую вам прочитать все документы здесь: https://laravel.com/docs/5.7/eloquent-relationships

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...