我对雄辩和L4.2有意见
我正在尝试在下面设置自定义轴模型:
//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);
}
下面是我的自定义透视模型“活动用户”
public function campaign() {
return $this->belongsTo('Campaign');
}
public function User() {
return $this->belongsTo('User');
}
public function facture() {
return $this->belongsTo('Facture');
}
制作模型有一些类似于hasMany(“活动用户”)的方法,称为campaign\u user。
我试着做一些事情,比如:
> $facture->campagne_user
但我犯了以下错误:
传递给__construct()的Argument 1必须是Illumate\Database\Eloquent\关系\Pivot::模型的一个实例,没有给出,在第849行的laravel/供应商/laravel/框架/src/Illumate/数据库/Eloquent/Model.php中调用并定义
以前有人有这个问题吗?我该怎么解决呢?
提前谢谢。
我通过尝试实现类似的目标而犯了同样的错误。事实上,您不能将pivot用作另一个关系,尽管它继承自模型
,但我们可以使用traits在真实模型
和自定义pivot
之间共享代码。
在您的示例中,您可以将activityuser
pivot中定义的方法放置在trait中:
trait CampaignUserTrait {
public function campaign() {
return $this->belongsTo('Campaign');
}
public function User() {
return $this->belongsTo('User');
}
public function facture() {
return $this->belongsTo('Facture');
}
}
然后定义一个继承自模型的
class CampaignUser extends Model {
use CampaignUserTrait
}
接下来,对自定义pivot类执行相同的操作:
class CampaignUserPivot extends Pivot {
use CampaignUserTrait
}
最后,在
Facture
类中,只需创建与扩展模型的
活动用户的关系即可:
class Facture extends Model {
public function campaign_user() {
return $this->hasMany('CampaignUser');
}
}
newPivot
方法现在引用新的类:
public function newPivot(Model $parent, array $attributes, $table, $exists){
if ($parent instanceof Campaign) {
return new CampaignUserPivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
基本上,pivot和模型共享的任何代码都应该位于
trait
中。
一般来说,我对Laravel和PHP是相当陌生的,因此,我不会责怪任何人认为这是一个坏主意,或者是否存在一个更优雅的解决方案。此外,我还没有发现任何不利因素,但可能有。
问候语
我有一个Spring启动应用程序,我正在尝试连接到DB2服务。但是我没有服务连接创建者异常,因为枢轴云代工支持Mongo db和其他一些db。有人能告诉我如何在DB2服务的Spring启动应用程序中编写自定义服务连接器吗?
希望你今天过得愉快。 我用的是Laravel 8。我有三个模型,我需要这些模型“纠缠”,可以说。 所以,我有三个基本的表 null null 我最后的方法是查询保存的自定义枢轴模型,并附加模型,但我想先问一下是否有更干净、更有说服力的方法来实现这一点。 任何建议都有帮助。提前感谢您慢慢来。
我在连接Laravel中的数据库模型时遇到问题。 现在,我想把它们连接起来,就像,每个用户可以有多个公司,每个公司都有自己的company_details。 我的用户。php模型如下所示: 如何从company_details表中获取值?
我有一个数据库结构,其中我有一个用户和公司之间的多对多关系表。为此,我有一个交叉引用表company_user。此外,每个用户在公司中都有一定的角色,因此交叉引用表也有role_id。问题是,由于某种原因,当我试图从交叉引用表中检索角色时,我会出现异常。 以下是我如何定义公司模型中的关系: 现在,如果我只是尝试从pivot获取角色id,一切都会正常工作: 但是我还需要角色的数据,所以我在自定义透视
问题内容: 示例选择: 输出: 是否可以按时间顺序对记录进行排序,排除列“月”和“年”?没有列出所有列。 UPD 需要: 就像是: 问题答案: 要对记录进行排序,可以将以下内容添加到sql的末尾 注意:枢轴列名称区分大小写,因此需要用引号引起来 这是完整的查询,仅选择您需要的列: