gpt4 book ai didi

php - 如何使用 PHP/Laravel 设置模型并存储数据流

转载 作者:行者123 更新时间:2023-11-29 10:08:31 25 4
gpt4 key购买 nike

我们希望从专有服务器存储房地产信息(我们使用 PHRETS 检索数据并使用 MySQL 来存储数据)。旧代码是过程性的并使用数组,但我认为最好使用 Eloquent ORM 并让 Laravel 完成繁重的工作,而不是编写我们自己的对象。

数据流的结构对于它发送的每个房地产都是可重复的,但数据将简单地保留它不包含的信息(例如$property['AgentDetails']['Position'] 如果其端不存在,则可能不会完全发送)。

另一个需要注意的是,一些数据是在多维数组中接收的,这些数据当前需要循环并存储在单独的规范化表中(propertyAddresspropertyAgentDetailspropertyPhotos 等)。这意味着数据可以作为 $property['AgentDetails'][0] ... $property['AgentDetails'][2] 发送,因为它包含多个列表代理或 $property['AgentDetails'](如果有一个挂牌代理)。

然后,我们必须通过属性 ID 上的大量联接来检索此数据。

我正在寻找设置一个 Laravel 模型和 Controller 来完成繁重的工作并处理此数据流(如果不存在则插入,如果存在则更新),其中简化的结构类似于此,

array(#) {
["@attributes"]=>
array(2) {
["ID"]=>
string(7) "444444"
["LastUpdated"]=>
string(29) "Fri, 13 Jul 2018 17:18:20 GMT"
}
["ListingID"]=>
string(7) "3333333"
["AgentDetails"]=>
array(6) {
["@attributes"]=>
array(1) {
["ID"]=>
string(7) "2222222"
}
["Name"]=>
string(14) "AGENT NAME"
["Websites"]=>
array(1) {
["Website"]=>
string(26) "http://example.com"
}
["Office"]=>
array(7) {
["@attributes"]=>
array(1) {
["ID"]=>
string(5) "111111"
}
["Name"]=>
string(27) "REALTY CO"
["Address"]=>
array(5) {
["StreetAddress"]=>
string(19) "59 main st. west"
["AddressLine1"]=>
string(19) "59 main st. west"
["City"]=>
string(7) "city"
["Province"]=>
string(2) "province"
["PostalCode"]=>
string(6) "H0H0H0"
}
["Phones"]=>
array(1) {
["Phone"]=>
array(1) {
[0]=>
string(14) "(555) 555-5555"
}
}
["Websites"]=>
array(1) {
["Website"]=>
string(30) "http://www.example.com"
}
["OrganizationType"]=>
string(4) "Firm"
["Franchisor"]=>
string(11) "Independent"
}
}
["Building"]=>
array(7) {
["CoolingType"]=>
string(15) "Air Conditioned"
["FireplacePresent"]=>
string(5) "False"
["FireProtection"]=>
string(21) "Full Sprinkler System"
["HeatingType"]=>
string(29) "Baseboard heaters, Forced air"
["SizeInterior"]=>
string(10) "15000.0000"
["TotalFinishedArea"]=>
string(10) "15000 sqft"
["UtilityWater"]=>
string(15) "Municipal water"
}
["Land"]=>
array(1) {
["Acreage"]=>
string(5) "false"
}
["Address"]=>
array(8) {
["StreetAddress"]=>
string(13) "301 main"
["AddressLine1"]=>
string(13) "301 main"
["StreetNumber"]=>
string(3) "301"
["StreetName"]=>
string(9) "main"
["City"]=>
string(7) "city"
["Province"]=>
string(7) "province"
["PostalCode"]=>
string(6) "H0H0H0"
["Country"]=>
string(6) "Canada"
}
["PropertyType"]=>
string(10) "Industrial"
["ZoningDescription"]=>
string(4) "COMM"
}

是否有关于如何使用 Laravel 和 Eloquent/ORM 处理复杂(但可重复)的数据结构和数据流的最佳实践?

我认为我可以继续练习不同的迁移/数据库结构,并测试如何最好地存储和检索数据,但我认为首先了解最佳实践或其他人首先尝试过的事情会很有帮助。

我的直觉是,存储和检索数据的最简单方法是完全类似于数据结构,并在每次结构发生变化时更新它。数据是通过版本化 API 检索的,因此应该没问题。

让我知道你的想法。非常感谢!

最佳答案

根据您的记录,您似乎需要创建这些模型及其关系。它会给你基本的想法

这是 Eloquent 模型及其表结构,您可以添加修改它,但应该是这样的

Model with Tables

<强>1。属性(表:属性(id、名称、描述、listing_id、type_id、created_at、updated_at))

<强>2。 agent_property(id,property_id,agent_id,created_at,updated_at)不需要为其创建模型

<强>2。代理(表:代理(id,名称,office_id,created_at,updated_at))存储代理详细信息

<强>3。网站(表:网站(id、名称、ownerable_id、ownerable_type、created_at、updated_at))

<强>4。办公室(表:办公室(id、名称、address_id、created_at、updated_at))

<强>5。地址(表:地址(id、邮政编码、街道、line1、城市、省份、国家/地区、created_at、updated_at))

<强>6。电话(表:电话(id、号码、phoneble_id、phoneble_type、created_at、updated_at))

<强>7。类型(表:类型(id,名称,created_at,updated_at))

<强>8。建筑物(表:建筑物(id,property_id,cooling_type,firewall_present,...,created_at,updated_at))

您将在此处获得所有 Eloquent 模型详细信息 https://laravel.com/docs/5.6/eloquent#defining-models

Now the Eloquent relationship between these models should be like this

  1. 属性belongsTo类型(在属性模型中)

  2. 特性hasOne建筑物(在特性模型中)

  3. 属性belongsToMany代理(在属性模型中,使用agent_property数据透视表)

  4. 代理belongsToMany属性(在代理模型中,使用agent_property数据透视表)

  5. 代理属于办公室(在代理模式中)

  6. 代理hasMany网站(在代理模型中)

  7. Office hasMany 电话(在 Office 模型中,使用 polymorphic relation )

  8. 办公室属于地址(在办公室模型中)

  9. 网站morphTo(在网站模型中,polymorphic relation)

  10. 手机morphTo(在手机型号中,polymorphic relation)

您将在此处获得所有关系详细信息https://laravel.com/docs/5.6/eloquent-relationships

希望能给你一些启发

关于php - 如何使用 PHP/Laravel 设置模型并存储数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51433525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com