В настоящее время я работаю над сайтом и решил перенести его с CodeIgniter на Laravel, в основном из-за архитектуры RESTful и потому, что мне нужно подключиться к сайту другой компании с помощью API.
Проблема, с которой я сейчас сталкиваюсь, такова:
У меня есть пользователь, и у пользователя может быть два адреса: выставление счета или доставка. Тем не менее, пользователь также может не иметь назначенных адресов. В общем, вот как это выглядит в базе данных:
-User
--id
--name, phone, etc...
-UserAddress
--id
--user_id
--billing_address_id
--shipping_address_id
-Address
--id
--street, city, state, etc...
Итак, Address дважды связывается с UserAddress с помощью идентификатора адреса выставления счета или доставки, так какова связь между этими тремя таблицами в Laravel 4? Я довольно плохо знаком с Laravel и программированием в целом, поэтому я хотел бы получить несколько советов о том, как правильно настроить такие отношения, учитывая, что эти отношения также случаются с некоторыми другими таблицами и Address.
Примечание. Пользователь и Адрес не содержат внешних ключей, их можно рассматривать как базовые таблицы. Все, для чего нужен пользователь, ссылается на таблицу User, а также все, что требует адреса, хранит этот адрес в таблице Address.
Ну, в итоге мне пришлось самому в этом разобраться, после ожидания ответа целый месяц.
В конце концов я только что вошел в таблицу адресов и добавил поле address_type, которое позволило мне указать, было ли это биллинг, доставка или и то, и другое. Таким образом, моя сводная таблица изменилась на три поля id, user_id и address_id, затем я использовал логику в моем контроллере для обработки чтения полей и определения типа адреса и соответствующего действия.
В итоге все выглядело примерно так:
-пользователь --Я бы --username --пароль --Эл. адрес --так далее... -User_pvt_address --Я бы --Идентификатор пользователя --address_id -Адрес --Я бы --адрес 1 --Адрес 2 --город --государство --country_id --Почтовый индекс --тип адреса -Тип адреса --Я бы --тип
Других решений пока нет …