【发布时间】:2019-02-22 13:10:05
【问题描述】:
这是我的父模型,它使用 mysql 类型的默认数据库连接。
class Property extends Model
{
use SoftDeletes, HybridRelations;
protected $hidden = [];
public function propertyType()
{
return $this->hasOne('App\RentHisto\Models\PropertyType');
}
}
这是我的 mongodb 模型,它与属性有关系
class PropertyDetail extends Model
{
protected $connection = "mongodb";
protected $collection = "property_details";
public function propertyDetails(){
return $this->belongsTo(Property::class);
}
}
这是我使用 property_details 获取属性数据的查询
$properties = Property::with('propertyDetails')->get();
但问题是,当我尝试获取数据时,如果是属性详细信息,它会返回 null。这可能是由于,我们在与 mysql 实例的连接上调用了 mongodb 模型数据。那么有什么方法可以在两个模型(即mysql模型和mongodb模型)之间建立关系(hasOne)。谢谢!
【问题讨论】:
-
如果您使用 MariaDB(基于 MySQL 源代码),您可以使用 CONNECT 表引擎(mariadb.com/kb/en/library/connect)从 mongodb 文档(mariadb.com/kb/en/library/connect-mongo-table-type)创建 SQL 表
-
从我在jenssegers/laravel-mongodb 中读到的内容来看,
HybridRelations特征应该在 mongo 模型上,而不是 MySQL 模型上,所以在PropertyDetail而不是Property中 -
我认为它会添加到基本模型中。你可以在这里查看 [moloquent.github.io/master/relations/#mysql-relations]
标签: mysql mongodb laravel eloquent relationship