【发布时间】:2016-03-17 12:34:54
【问题描述】:
我对 Eloquent 和 L4.2 有疑问
我正在尝试在下面设置自定义 Pivot 模型:
//campaign model
public function users(){
return $this->belongsToMany('User');
}
public function newPivot(Eloquent $parent, array $attributes, $table, $exists){
if ($parent instanceof User) {
return new CampaignUser($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
//user model
public function campaigns(){
return $this->belongsToMany('Campaign');
}
public function newPivot(Eloquent $parent, array $attributes, $table, $exists){
if ($parent instanceof Campaign) {
return new CampaignUser($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
在我的自定义枢轴模型“CampaignUser”下方
public function campaign() {
return $this->belongsTo('Campaign');
}
public function User() {
return $this->belongsTo('User');
}
public function facture() {
return $this->belongsTo('Facture');
}
Facture 模型有一些类似于 hasMany('CampaignUser') 的方法,称为 活动用户。
我正在尝试做类似的事情:
> $facture->campagne_user
但我收到以下错误:
参数 1 传递给 Illuminate\Database\Eloquent\Relations\Pivot::__construct() 必须是 Illuminate\Database\Eloquent\Model 的实例,没有给出,调用 laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 在第 849 行并定义
以前有人遇到过这个问题吗? 我该如何解决?
提前致谢。
【问题讨论】:
-
你能粘贴完整的自定义数据中心 CampaignUser 定义吗?
-
已经在我之前的帖子里了
-
UserCampaign 是一个枢轴而不是常规模型,因此您不能将其用作关系。它需要常规模型不需要的构造函数参数。
-
@lagbox 谢谢你的回答。有没有办法使用它有没有关系...?
-
不,它不是常规型号。自定义数据透视类型替换了附加到从多对多关系返回的模型的通用数据透视类型,就是这样。
标签: php laravel laravel-4 eloquent pivot-table