laravel как передать отношения в массив

У меня есть эти таблицы:

xml_documents таблица, в которой есть только один столбец, то есть id

master_information таблица со столбцами id, xml_document_id, container, next_page

отношение один к одному.

на моей модели все работает. Я могу добавлять, обновлять, удалять, и все работает отлично.

теперь я хочу экспортировать свою модель в формате xml.

поэтому мне нужно перенести мою модель xmlDocument в массив, а затем передать этот массив в xml. Я могу сделать вторую часть сам, которая переводит массив php в xml, но я не знаю, как перенести модель в массив.

Я пробовал это:

$xmlDocument = XmlDocument::find(4)->get()->toArray();
dd($xmlDocument)

но я получил все строки xml_document, подобные этому

array(2) { [0]=> array(1) { ["id"]=> int(4) } [1]=> array(1) { ["id"]=> int(5) } }

Затем я попробовал это:

 $xmlDocument = XmlDocument::find(4)->toArray();
    dd($xmlDocument)

но я получил это:

array(1) { ["id"]=> int(5) }

Мне нужно также получить отношения. Например:

 Array (
    [id] = 4
    [xmlInformation] => Array (
            [id] => 1
            [container] => 'bla'
            [next_page] => 'bla bla'    
        )    

Вы можете помочь, пожалуйста?


person Anastasie Laurent    schedule 03.07.2014    source источник


Ответы (1)


Попробуй это;

Для определенного XmlDocument;

XmlDocument::with('MasterInformation', <... comma separated list of other relationships>)->find(4)->toArray();

Для всех XmlDocuments;

XmlDocument::with('MasterInformation', <... comma separated list of other relationships>)->get()->toArray();
person Matt Burrow    schedule 03.07.2014
comment
может быть, вы имеете в виду XmlDocument::with('MasterInformation')->find(4)->toArray(); правильно? - person Anastasie Laurent; 03.07.2014
comment
Тот просто не был уверен, как это называется. - person Matt Burrow; 03.07.2014
comment
это дает мне это: array(2) { ["id"]=> int(4) ["master_information"]=> array(4) { ["id"]=> int(6) ["xml_document_id"]=> int(4) ["container"]=> string(9) "container" ["next_page"]=> string(9) "next page" } } так что я думаю, что первая часть решена. однако как я могу указать больше моделей, пожалуйста? например ->with('MasterInformation', 'DetailsInformation') ? - person Anastasie Laurent; 03.07.2014
comment
О, я понимаю, что вы имеете в виду, если они у вас есть как отношения, просто добавьте их в with. :) - person Matt Burrow; 03.07.2014
comment
+1 тебе, бти, но не то, что я имею в виду. Я имею в виду, что таблица xml_document имеет другую связь с таблицей details_attribute. то, что вы мне дали, это отношения между xml_document и master_information, так как я могу получить отношения между xml_document и оба master_information и details_information - person Anastasie Laurent; 03.07.2014
comment
кажется, вы только что снова обновили вопрос :) позвольте мне проверить это - person Anastasie Laurent; 03.07.2014
comment
Я сделал это $xmlDocument = XmlDocument::with('MasterInformation', GeneralInformation)->find(4)->toArray();, но получил исключение: Call to undefined method Illuminate\Database\Query\Builder::() - person Anastasie Laurent; 03.07.2014
comment
Каждое имя отношения должно быть заключено в кавычки «‹имя отношения›», «‹имя отношения›» в with(). - person Matt Burrow; 03.07.2014
comment
Я не хочу быть грубым, но, пожалуйста, только последнее, я сделал это $xmlDocument = XmlDocument::with('MasterInformation', 'GeneralInformation', 'DetailsAttributes')->find(4)->toArray();, и это работает отлично. последнее, что MasterInformation также имеет отношение один ко многим с MasterAttributes, как я могу добавить его в код, который я показал вам, пожалуйста? только это дело :) - person Anastasie Laurent; 03.07.2014
comment
$xmlDocument = XmlDocument::with('MasterInformation', 'MasterInformation.MasterAttributes', 'GeneralInformation', 'DetailsAttributes')->find(4)->toArray(); - person Matt Burrow; 03.07.2014
comment
ВАУ ВАУ ВАУ тааааааааааааааааааааааааааааааааааааааааааааааааак Хотел бы я проголосовать за вас 100 раз. большое спасибо дорогая - person Anastasie Laurent; 03.07.2014