Laravel orm with() 不起作用
Posted
技术标签:
【中文标题】Laravel orm with() 不起作用【英文标题】:Laravel orm with() not works 【发布时间】:2020-02-27 12:00:06 【问题描述】:JoinSkipReason没有id,但是JoinReview的主键是JoinSkipReason的外键。
查询生成器运行良好...
我想使用 with() 将 JoinSkipReason 加入到 JoinReview 表中。
谢谢。
JoinReview::with(
'join_skip_reason'
);
class JoinReview extends Model
public function joinSkipReason()
return $this->hasOne('App\Models\Service\JoinSkipReason');
class JoinSkipReason extends Model
protected $fillable = ['join_review_id', 'reason'];
public function joinReview()
return $this->belongsTo('App\Models\Service\JoinReview', 'id');
【问题讨论】:
请张贴表格的结构。 @TsaiKoga 问题解决了。 很好,这意味着你有primary_key。 Laravel 默认为每个表生成 primary_keyid
。
@TsaiKoga 当我制作JoinSkipReason
表时故意将primary key
除外
【参考方案1】:
我自己也遇到过这个问题,问题是要急切加载多词关系,您应该使用驼峰式。
在您的代码中:
JoinReview::with(
'joinSkipReason'
);
我还发现了一个(kinda old) issue,说你也应该以camelCase的形式访问急切加载的关系,否则它会忽略缓存的结果并再次查询数据库。
【讨论】:
你救了我的命!【参考方案2】:检查这样做
public function joinSkipReason()
return $this->hasOne('App\Models\Service\JoinSkipReason','join_review_id','id');
【讨论】:
可悲...它不起作用。我认为问题是因为 JoinSkipReason 表中的“无主键”......以上是关于Laravel orm with() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ORM 在 laravel 的默认用户控制器和用户模型中不起作用