在我的几个模型中,我从一个模型到另一个模型建立了间接关系。
这是我的作品
模型:
public function GeoEntities()
{
return $this->hasMany(\App\GeoEntity::class);
}
public function geoLand()
{
$builder = $this->GeoEntities()->where("entity_type", 0);
$relation = new HasOne($builder->getQuery(), $this, 'work_id', 'id');
return $relation;
}
public function geoLandPoints()
{
return $this->geoLand->geoPoints();
}
此返回$this-
但在这种情况下,当
geoLand
为空时,会产生错误:
在null上调用成员函数geoPoints()
如下图所示:
$points = $work->geoLandPoints;
中间关系是一个有很多
我想用类似的关系调用
geoLandPoints
而不是geoLandPoints()
但是,
当中间日期模型为空时,我需要一个空的关系。
但我不明白,如何做到这一点。
使用
Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin
包,我尝试重构关系,如下所示:
public function geoLandPoints()
{
$builder = $this
->select("works.*")
->join("geo_entities", "works.id", "geo_entities.work_id")
->join("geo_points", "geo_entities.id", "geo_points.geo_entity_id")
->where("entity_type", 0)
->where("works.id", $this->id);
return new HasMany($builder->getQuery(), $this, "work_id", "id");
}
但是它无法将数据库查询生成器转换为雄辩的查询生成器。
参数1传递给照明\数据库\雄辩\关系\HasOneOr许多::__construct()必须是照明\数据库\雄辩\生成器的实例,给定照明\数据库\查询\生成器的实例
为什么不使用hasOne()
方法,而不是尝试返回自己的hasOne
类?此外,您还可以使用withDefault()
,这样关系将返回一个空的GeoEntity
,而不是null
。
public function geoLand()
{
return $this->hasOne(\App\GeoEntity::class)->where("entity_type", 0)->withDefault();
}
您甚至可以传递一个默认值数组<代码>带默认值(['column'=
我有3个模型:用户、宠物和诊所。 让我们假设表格:用户、宠物和诊所。关系是,一个用户可以有多个宠物,而一个宠物只有一个诊所。 在“Pets”表中,我有一个FK到用户id,另一个FK到诊所id。 我想做一些类似的事情: 在用户模型上,返回与用户关联的所有不同诊所。现在我只能做: 但我只想返回不同的诊所。 用户模态: 宠物模式: 有什么建议吗?
我有一个多对多关系的轴心模型,叫做UserWebpage。 我也有个模特叫收藏 我试图在用户网页和收藏之间建立多对多的关系。基于我发现的这个SO问题,我知道这样的事情应该是可能的: Laravel:如何使用多个数据透视表关系 我的问题是: 当我尝试在UserWebpage实例和集合实例之间插入关系时,会出现以下错误。 插入关系的代码: 我得到的错误是: Illumb\Database\QueryE
问题内容: 我正在开发一个支持Google两步验证的应用程序。此应用程序还支持“可信任此设备30天”的功能。 我使用数据库保存所有这些信息,例如IP地址和到期时间。现在,当我填写时间戳以将当前时间增加30天时,它将比当前时间早的时间戳插入数据库中。 例如:当前时间= 。现在,当我加上30天(毫秒)时,得出的日期不是30天,而是大约19天。 问题答案: 此问题与32位整数溢出有关。由于整数的最大值为
模型(Model)之间存在各种各样的关系,如:一对一(One-To-One )、一对多(One-To-Many)等。模型间的关系本质上是对其代表的数据库中表之间的关系描述,通过这些关系可以实现数据库中表之间主/外键约束的创建。查询时也可以基于这些关系,生成在数据库中执行的连接查询或复合查询SQL语句。 关系/关联的使用 1.1 一对一(One-To-One)关联 1.2 一对多(One-To-Ma
问题内容: 我有一个打算用数据库记录填充的结构,datetime列之一为可为空: 由于指针可以是,所以我做了一个指针,但这需要代码知道变量之间的区别。有没有更优雅的方式来解决这个问题? 问题答案: 您可以使用,或者在Go 1.13中,现在可以使用标准库的类型。 从github上的lib / pq :
问题内容: 我目前正在尝试Django。我在urls.py中的一个参数中使用了参数。当我运行服务器并尝试浏览时,出现此错误。 这些是我的urls.py文件: 和 我如何通过错误消息中所述的? 问题答案: 检查文档是否包含在此处。 您所做的不是传递参数包括的可接受方法。您可以这样做: