我有一个Laravel模板,我想根据它生成一个XML文件。
例如,结构具有名称,XPath和类型。所以XML应该是这样的:
<name>
</name>
<type>
</type>
<xpath>
</xpath>
当然,我正在寻找能够处理人际关系的更复杂的事情。
有没有这方面的工具?
我正在使用MySQL,所以也许有一个工具呢?或者也许是PHP脚本?
我已经尝试过搜索,我发现的所有工具都是从XSD生成HTML表单和从XSD生成通用XML的工具。
表及其列是:
xml_document
表格,其中包含列:id
general_information
表包含列:id
,xml_document_id
,domain
,start_url
和`category master_information
表包含列:id
,xml_document_id
,container
和next_page
master_attribute
表包含列:id
,master_information_id
,name
,xpath
和type
details_attribute
表包含列:id
,xml_document_id
和type
您可能会注意到:
之间的关系答案 0 :(得分:6)
根据Laravel Documentation,集合及其关系可以输出到数组:
$roles = User::find(1)->roles->toArray();
例如,我有两个型号,User
和Phone
,以及一个用户hasMany()
手机。
users phones
+----+--------+ +----+-----------+---------+
| id | name | | id | number | user_id |
+----+--------+ +----+-----------+---------+
| 1 | user 1 | | 1 | 111111111 | 1 |
| 2 | user 2 | | 2 | 222222222 | 2 |
+----+--------+ | 3 | 333333333 | 1 |
+----+-----------+---------+
我们可以使用toArray()
方法返回一个数组,并with()
提取所有相关的Phones
:
$users = User::with('phones')->get()->toArray();
给出这个(我有hidden
模型中的一些字段用于此答案的目的):
Array (
[0] => Array (
[id] => 1
[name] => user 1
[phones] => Array (
[0] => Array (
[id] => 1
[number] => 111111111
[user_id] => 1
)
[1] => Array (
[id] => 3
[number] => 333333333
[user_id] => 1
)
)
)
[1] => Array (
[id] => 2
[name] => user 2
[phones] => Array (
[0] => Array (
[id] => 2
[number] => 222222222
[user_id] => 2
)
)
)
)
然后,您可以使用各种方法将数组转换为XML。这是我从another answer on SO
取消的function array_to_xml(array $arr, SimpleXMLElement $xml)
{
foreach ($arr as $k => $v) {
is_array($v)
? array_to_xml($v, $xml->addChild($k))
: $xml->addChild($k, $v);
}
return $xml;
}
示例输出:
<?xml version="1.0"?>
<root><0><id>1</id><name>user 1</name><phones><0><id>1</id><number>111111111</number><user_id>1</user_id></0><1><id>3</id><number>333333333</number><user_id>1</user_id></1></phones></0><1><id>2</id><name>user 2</name><phones><0><id>2</id><number>222222222</number><user_id>2</user_id></0></phones></1></root>