php-Laravel 4:模型关系不起作用(某种)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Laravel 4:模型关系不起作用(某种)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2156字,纯文字阅读大概需要4分钟。
内容图文
![php-Laravel 4:模型关系不起作用(某种)?](/upload/InfoBanner/zyjiaocheng/678/6efee9acd1ac4e619394e37cbf1aaa31.jpg)
我的Laravel 4项目中有3个模型:Employee,EmployeeClass,Employer:
class Employee extends Eloquent {
protected $table = 'users';
public function employee_class () {
return $this->belongsTo('EmployeeClass', 'employee_class_id');
}
}
class EmployeeClass extends Eloquent {
protected $table = 'employee_classes';
public function employees () {
return $this->hasMany('Employee');
}
public function employer () {
return $this->belongsTo('Employer');
}
}
class Employer extends Eloquent {
protected $table = 'employers';
public function employee_classes () {
return $this->hasMany('EmployeeClass');
}
}
EmployeeClass关系按预期工作.我可以执行EmployeeClass :: find(1)-> employees;或EmployeeClass :: find(1)->雇主;或它返回对象.
尝试对其他两个进行相同的调用(以检索与EmployeeClass的关系)不起作用.这两行都返回空集:
Employee::find(1)->employee_class;
Employer::find(1)->employee_classes;
但是,奇怪的是,以下两行均能正常工作:
Employee::find(1)->employee_class()->first();
Employer::find(1)->employee_classes()->first();
第一个示例返回NULL(我相信它应该返回一个Collection).第二个示例返回一个EmployeeClass对象(预期的实例).
我想指出的是,每个表中都有一个ID为1的条目,并且每个条目也都设置为FK = 1,因此它们应该正确连接.实际上,我认为EmployeeClass可以正常工作,并且获取查询并执行它(在第二套成功的代码集中)也可以证明这一点.
我确定我只是在做一些愚蠢的事情.也许另一双眼睛会有所帮助!
我可以使用变通方法(第二组代码),因为它似乎可以正常工作,但是我想尽可能使它整洁并纠正.
解决方法:
对于多单词关系,该函数应位于camelCase中(实际上,所有类方法都应如此).访问模型的属性时,仍然允许以蛇形方式访问关系名称(在您的示例中为’employee_class’,但是请注意,这会绕过所有急切的加载,并且您应在与关系方法的情况完全相同的情况下访问关系名称.
在您的示例中,如果将employee_class(es)函数重命名为employeeClass(es),那么一切都会正常.
// gets all employees and their class(es). the argument(s) for with()
// MUST match the names of the methods exactly.
Employee:with('employeeClass')->get();
// you MUST access eager loaded data in the same case as in with().
// if you access via snake case, eager loading is bypassed.
$employee->employeeClass;
// this also works but should generally be avoided.
Employee::find(1)->employeeClass()->first();
内容总结
以上是互联网集市为您收集整理的php-Laravel 4:模型关系不起作用(某种)?全部内容,希望文章能够帮你解决php-Laravel 4:模型关系不起作用(某种)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。