【发布时间】:2014-08-01 12:32:32
【问题描述】:
我有两节课。 A 和 B。A 类扩展了 Laravel,B 类扩展了 A。 他们说唱两张桌子。与 B 类关联的表没有主键,也没有外键 (A_id)。情况是这样的:
class A extends Eloquent
{
protected $table = 'a';
}
class B extends A
{
protected $table = 'b';
protected $primaryKey = 'a_id';
}
我需要在 B 类中指定主键,因为 laravel 尝试使用构建 B 对象
SELECT * FROM B where id = ?
但字段 id 不存在。
问题是当我尝试从 B 对象 es 访问 A 方法时
$b = B::find(1);
$b->method_in_a_class();
调用的方法在 C 表(也是另一个类)中执行查询,与 A 表链接,而不是与 B 表链接,因此框架执行此查询:
SELECT * FROM C WHERE B_id = ?
但它会是
SELECT * FROM C WHERE A_id = ?
为什么??
谢谢
【问题讨论】:
标签: php inheritance laravel-4 eloquent models