我的模特出了什么问题:
连接表:
id,parent_sid,connection_id(可空)
连接步骤
id,sid,date_started,date_ended,connection_id
步骤
id,name,url
class Step extends Eloquent {
public function connections() {
return $this->hasMany("Connection", "parent_sid");
}
...}
class Connection extends Eloquent {
public function connectionSteps() {
return $this->hasMany("ConnectionStep", "connection_id");
}
...}
class ConnectionStep extends Eloquent {
public function connection() {
return $this->belongsTo("Connection", "connection_id");
}
... }
但是当我跑步时:
Step::find(1)->connections()->connectionSteps();
我总是收到这个错误:
异常'BadMethodCallException',消息'调用未定义 方法Illuminate \ Database \ Query \ Builder :: connectionSteps()'
答案 0 :(得分:1)
在这种情况下,您可以使用关系数据获取模型:
$step = Step:with('connections.connectionSteps')->find(1);
现在您可以这样显示数据:
echo $step->name;
foreach ($step->connections as $con) {
foreach ($con->connectionSteps as $step) {
echo $step->date_started;
}
}
答案 1 :(得分:0)
在示例Step :: find(1) - > connections() - > connectionSteps()中, 你正在寻求访问未定义的步骤的关系connectionSteps。 这就是为什么你得到'调用未定义的方法',因为这是Connections关系。
您可以通过使用将同时加载多个关系的预先加载来实现此目的:
Step::with(array('connections', 'connections.connectionSteps'))->find(1);
Hepe有帮助!
答案 2 :(得分:0)
正确的方式:
Step::find(1)->connections->connectionSteps;
急切加载:
Step::with('connections.connectionSteps')->find(1)->connections->connectionSteps;