0

定义关系时,如何使用模型的属性而不是 id 来告诉 hasOne 模型加入?

我的课程是:

Site
  id
  zipcode

LocationData
  id
  zipcode

当我运行时:

$site = Site::find(1);
$site->locationData

生成的查询是:

select * from `location_data` where `location_data`.`zipcode` = 1 limit 1

请注意,被引用的邮政编码列传递了 1(站点 ID),但我希望它使用站点的邮政编码。

注意:我不是在问如何在子关系上设置外键,而是如何将外键传递给父主键以外的属性。

4

2 回答 2

1

知道了。这是一个调整:

编辑您的模型并将 primaryKey 移至公共可见性:

class Site extends Eloquent {

    public $primaryKey = 'id';

    ....
}

然后,您只需在需要时进行设置:

$site = Site::find(1);
$site->primaryKey = 'zipcode';
$site->locationData;
于 2013-09-25T23:11:40.930 回答
0

您可以在定义关系时声明关系键。

return $this->hasMany('Thing','key_to_use');
于 2013-09-26T11:29:54.223 回答