timitek / getrets-laravel
这是一个由 timitek 开发的 GetRETS API 的 Laravel 包(http://www.timitek.com)。GetRETS 是 timitek 开发的一个产品/服务,使得快速构建房地产相关应用以从多个 MLS 拉取房源数据成为可能,无需了解 RETS 或 IDX 或处理这些数据源映射和存储的痛苦。
Requires
- php: >=7.0
- illuminate/support: 5.5.*
- timitek/getrets: ^1.0
Requires (Dev)
- phpunit/phpunit: ~6.0
README
timitek 提供的 GetRETS® API 的 Laravel 包(http://www.timitek.com)。
基于在 (https://github.com/timitek/getrets-php-sdk) 找到的 PHP SDK。
GetRETS® 是 timitek 开发的一个产品/服务,使得快速构建房地产相关应用以从多个 MLS 拉取房源数据成为可能,无需了解 RETS 或 IDX 或担心从这些不同来源映射和存储房源数据的痛苦。
GetRETS® 作为一项服务,提供了一个用于消费数据的 RESTful API 端点,尽管它不仅限于在 PHP 应用程序中使用,用户也不必使用我们的 SDK,但我们提供了一个简单的 PHP SDK 和相应的文档。
目录
设置
兼容性指南
安装
要添加到现有的 Laravel 应用程序,请运行以下命令。
composer require timitek/getrets-laravel
注意: 对于 Laravel 5.4 及更早版本,需要在 config/app.php 的 providers 部分添加以下内容。
Timitek\GetRETS\Providers\GetRETSServiceProvider::class,
使用以下命令将配置文件发布到 config/getrets.php。
php artisan vendor:publish --provider="Timitek\GetRETS\Providers\GetRETSServiceProvider" --tag=config
您可以通过修改 config/getrets.php 或在 .env 文件中添加以下内容来添加 timitek.com 提供给您客户密钥。
GETRETS_CUSTOMER_KEY=your_customer_key_from_timitek
查看示例页面
要测试安装,请启用示例,启动项目,并浏览到 /getrets/example。
要启用示例代码,请在 .env 文件中将 GETRETS_ENABLE_EXAMPLE 设置为 true。
GETRETS_ENABLE_EXAMPLE=true
通过运行以下命令在 PHP 开发服务器上托管应用程序;
php artisan serve
通过浏览以下链接查看项目示例:
要禁用示例代码,请在 .env 文件中将 GETRETS_ENABLE_EXAMPLE 设置为 false。
GETRETS_ENABLE_EXAMPLE=false
房源
用于处理预取/缓存的房源数据的主要控制器。
GetRETS::getListing();
这是检索 缓存的 房源的入口点。使用此入口点将拉取已从您的 MLS 预取的数据。
优点
- 更快的数据检索 (数据的检索无需与您的 MLS RETS 提供商进行协商和转换)
- 更高级的搜索 (由于是预取数据,我们不受 DMQL 查询或其他由 RETS 提供商限制的限制)
- 即使在 MLS 维护时也能工作
缺点
- 数据不是 100% 实时的 (我们不断轮询 MLS 以获取新数据,但新房源可能需要一小时左右才会出现,并且我们每 24 小时刷新一次房源)
searchByKeyword
按关键词搜索房源
GetRETS::getListing()->searchByKeyword($preparedKeywords);
这是一个简单的搜索,将检索通过关键词搜索的房源。
参数
关键词 - 用于搜索的关键词
返回结果
CondensedListing 的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
search
高级搜索
GetRETS::getListing()->search($keywords, $extra, $maxPrice, $minPrice, $beds, $baths, $includeResidential, $includeLand, $includeCommercial);
一种更高级的搜索,通过可选参数检索受约束的列表。
参数
关键词 - 用于搜索的关键词
extra - (可选) 要搜索的额外术语的逗号分隔列表(高尔夫,湖泊等...)
maxPrice - (可选) 列表的最高价格
minPrice - (可选) 列表的最小价格
beds - (可选) 需要的最小卧室数量
baths - (可选) 需要的最小浴室数量
includeResidential - (可选) 包含住宅列表
includeLand - (可选) 包含土地列表
includeCommercial - (可选) 包含商业列表
注意 - 如果您没有设置任何 include 参数,则假定所有都设置为默认。
返回结果
CondensedListing 的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
details
获取特定列表的详细信息
GetRETS::getListing()->details($listingSource, $listingType, $listingId);
检索列表的更具体/非压缩的详细信息。您通常会将搜索函数返回的值用作参数。
参数
listingSource - MLS 列表源的字符串表示(请参阅 FeedsModels.Models.enumListingSource)
listingType - 表示列表类型的字符串,例如住宅,土地等..(请参阅 FeedsModels.Models.enumListingType)
listingId - 要检索列表的唯一 ID
返回结果
单个 Listing
{
"description": "string",
"features": [
"string"
],
"photoCount": 0,
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
imageUrl
获取用于显示图像的 URL
GetRETS::getListing()->imageUrl($listingSource, $listingType, $listingId, $photoId, $width = null, $height = null);
检索与特定列表关联的图像(们)。
特别说明 - 虽然 width 和 height 参数是可选的,但使用它们来指定合适的图像大小将通过减少需要下载的完整大小图像的需要来提高您的网站渲染速度。
此外,获取第一张照片($photoId = 0)是显示缩略图的建议策略。
参数
listingSource - MLS 列表源的字符串表示(请参阅 FeedsModels.Models.enumListingSource)
listingType - 表示列表类型的字符串,例如住宅,土地等..(请参阅 FeedsModels.Models.enumListingType)
listingId - 要检索列表的唯一 ID
photoId - 要检索的图像的零基索引 (请参阅列表详细信息中返回的 photoCount)。
width - 用于调整图像大小的宽度
height - 用于调整图像大小的宽度
返回结果
指定图像的 URL
RETSListing
使用 RETS 中的 MLS 实时数据处理列表的主要控制器
GetRETS::getRETSListing();
这是通过 RETS 从 MLS 获取实时列表数据的主要入口点。
优点
- 数据立即从 MLS RETS 服务器查询
缺点
- 比缓存方法慢一些。 (数据已被转换为 DMQL 并从第三方服务器检索)。
- 关键词搜索应用了更少的 "模糊逻辑",因为我们仅限于通过 MLS 定义的 DMQL 类别进行搜索。
- 如果您的 MLS 因维护而关闭,则无法检索结果。
特别说明 - 与从缓存数据获取数据时使用的相同功能(请参阅上面的列表控制器功能)也适用于此 API 控制器,因为它们具有相同的签名,只是它们将直接转到 RETS 服务器。
searchByKeyword
按关键词搜索房源
GetRETS::getRETSListing()->searchByKeyword($preparedKeywords);
这是一个简单的搜索,将检索通过关键词搜索的房源。
参数
关键词 - 用于搜索的关键词
返回结果
CondensedListing 的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
search
高级搜索
GetRETS::getRETSListing()->search($keywords, $extra, $maxPrice, $minPrice, $beds, $baths, $includeResidential, $includeLand, $includeCommercial);
一种更高级的搜索,通过可选参数检索受约束的列表。
参数
关键词 - 用于搜索的关键词
extra - (可选) 要搜索的额外术语的逗号分隔列表(高尔夫,湖泊等...)
maxPrice - (可选) 列表的最高价格
minPrice - (可选) 列表的最小价格
beds - (可选) 需要的最小卧室数量
baths - (可选) 需要的最小浴室数量
includeResidential - (可选) 包含住宅列表
includeLand - (可选) 包含土地列表
includeCommercial - (可选) 包含商业列表
注意 - 如果您没有设置任何 include 参数,则假定所有都设置为默认。
返回结果
CondensedListing 的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
details
获取特定列表的详细信息
GetRETS::getRETSListing()->details($listingSource, $listingType, $listingId);
检索列表的更具体/非压缩的详细信息。您通常会将搜索函数返回的值用作参数。
参数
listingSource - MLS 列表源的字符串表示(请参阅 FeedsModels.Models.enumListingSource)
listingType - 表示列表类型的字符串,例如住宅,土地等..(请参阅 FeedsModels.Models.enumListingType)
listingId - 要检索列表的唯一 ID
返回结果
单个 Listing
{
"description": "string",
"features": [
"string"
],
"photoCount": 0,
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
imageUrl
获取用于显示图像的 URL
GetRETS::getRETSListing()->imageUrl($listingSource, $listingType, $listingId, $photoId, $width = null, $height = null);
检索与特定列表关联的图像(们)。
特别说明 - 虽然 width 和 height 参数是可选的,但使用它们来指定合适的图像大小将通过减少需要下载的完整大小图像的需要来提高您的网站渲染速度。
此外,获取第一张照片($photoId = 0)是显示缩略图的建议策略。
参数
listingSource - MLS 列表源的字符串表示(请参阅 FeedsModels.Models.enumListingSource)
listingType - 表示列表类型的字符串,例如住宅,土地等..(请参阅 FeedsModels.Models.enumListingType)
listingId - 要检索列表的唯一 ID
photoId - 要检索的图像的零基索引 (请参阅列表详细信息中返回的 photoCount)。
width - 用于调整图像大小的宽度
height - 用于调整图像大小的宽度
返回结果
指定图像的 URL
executeDMQL
通过 DMQL 查询返回 MLS 结果
GetRETS::getRETSListing()->executeDMQL($query, $feedName, $listingType);
这是一个强大的功能,它将在 RETS MLS 服务器上执行原始 DMQL 并将结果作为序列化对象返回。
特别说明 - 这些结果不会像其他列表详细信息搜索那样以翻译方式返回。这些结果是以 MLS RETS 服务器返回的格式。如果您希望以 翻译 格式检索列表,请使用 getListingsByDMQL。
参数
query - 要在 MLS RETS 服务器上执行的 DMQL
feedName - 运行查询的馈送名称
listingType - 表示列表类型的字符串,例如住宅,土地等..(请参阅 FeedsModels.Models.enumListingType)
返回结果
封装响应,包含查询成功或失败的状态,以及获取的原始序列化结果。这些序列化结果对于每个feedName和listingType都可能不同。
{
"success": true,
"code": 0,
"message": "string",
"data": [
{
"className": "string"
}
]
}
getListingsByDMQL
通过DMQL查询获取翻译后的列表
GetRETS::getRETSListing()->getListingsByDMQL($query, $feedName, $listingType);
这是一个强大的功能,它将对RETS MLS服务器执行原始DMQL并返回序列化对象的结果。这与executeDMQL类似,但这个函数会将数据转换为与检索详细信息的其他方法返回的格式相同的格式。
参数
query - 要在 MLS RETS 服务器上执行的 DMQL
feedName - 运行查询的馈送名称
listingType - 表示列表类型的字符串,例如住宅,土地等..(请参阅 FeedsModels.Models.enumListingType)
返回结果
封装响应,包含查询成功或失败的状态,以及获取的原始序列化结果。
{
"success": true,
"code": 0,
"message": "string",
"data": [
{
"description": "string",
"features": [
"string"
],
"photoCount": 0,
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
}
Geocoding
地址处理的主要控制器
GetRETS::getGeocoding();
这个控制器是一个计划增长的区域,用于提供更高级的地理空间风格搜索列表数据。目前,它用于将关键词解析为更多的地理编码数据以用于搜索。
如果您提供与您的账户关联的Google地理编码密钥,您可以使用这些方法。
parseGoogleResults
翻译Google返回的结果
GetRETS::getGeocoding()->parseGoogleResults($googleResults);
此函数将解析Google服务返回的结果,并将它们转换为更适用于搜索列表数据的统一格式。
参数
googleResults - 来自Google地理编码器的geocode的结果
[
{
"address_components": [
{
"long_name": "string",
"short_name": "string",
"types": [
"string"
]
}
],
"formatted_address": "string",
"geometry": {
"bounds": {
"south": 0,
"west": 0,
"north": 0,
"east": 0
},
"location": {
"lat": 0,
"lng": 0
},
"location_type": "string",
"viewport": {
"south": 0,
"west": 0,
"north": 0,
"east": 0
}
},
"place_id": "string",
"types": [
"string"
]
}
]
返回结果
作为AddressDetail翻译的数据。
[
{
"streetNumber": "string",
"street": "string",
"city": "string",
"county": "string",
"state": "string",
"stateAbbreviation": "string",
"country": "string",
"postalCode": "string",
"latitude": 0,
"longitude": 0,
"formattedAddress": "string"
}
]
googleGeocode
以自由文本形式输入的地理编码地址
GetRETS::getGeocoding()->googleGeocode($address);
此函数将一个关键词通过Google的地理编码服务运行并返回翻译后的结果。
参数
address - 一个用于地理编码的自由文本(预期这是一个可能的地址)
返回结果
作为AddressDetail翻译的数据。
[
{
"streetNumber": "string",
"street": "string",
"city": "string",
"county": "string",
"state": "string",
"stateAbbreviation": "string",
"country": "string",
"postalCode": "string",
"latitude": 0,
"longitude": 0,
"formattedAddress": "string"
}
]
辅助函数
以下方法不是API端点,但在SDK中可用,以帮助实现该功能。
setSortBy / setReverseSort
用于对返回的结果进行排序/排序
GetRETS::getListing()->setSortBy("providedBy")->setReverseSort(true)->searchByKeyword($preparedKeywords);
setSortBy
此属性用于设置根据哪一列对数据进行排序。
setReverseSort
此属性用于设置sortBy列的排序顺序(升序/降序)。(默认为false表示升序)
默认情况下,列表将按价格从低到高排序。如果您想更改默认值,您可以修改这些行。
private $sortBy = "rawListPrice"; private $reverseSort = false;
如果您想在应用的其他任何部分手动对列表进行排序,您可以使用setSortBy和setReverseSort方法,如下面的语法所示。
$listings = $getRets->getListing()->setSortBy("providedBy")->setReverseSort(true)->searchByKeyword($preparedKeywords);
进一步阅读
有关API本身的更多信息可以在Swagger UI中找到(http://getrets.net/swagger/)。