尽管已经实施了许多L4关系,但他们大部分时间都在工作。我很挣扎,出于某种原因看不出我哪里出错了。这几乎肯定是显而易见的。
关系是一个任务有一个主题,主题有很多任务。
任务模型
class Task extends Eloquent {
protected $guarded = array();
public static $rules = array(
);
public function resources()
{
return $this->belongsToMany('Resource');
}
public function topic()
{
return $this->belongsTo('Topic', 'topic_id');
}
}
主题模型
class Topic extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function tasks()
{
return $this->hasMany('Task');
}
}
任务控制器
public function show($id)
{
$task = $this->task->where('number', $id);
return View::make('tasks.show', compact('task'));
}
当我dd($ task)时,relations数组为空。
对象(任务)#688(21){[“guarded”:protected] =>数组(0){} [ “连接”:保护] => NULL [“table”:protected] =>空值 [ “的PrimaryKey”:保护] => string(2)“id”[“perPage”:protected] => int(15)[“incrementing”] => bool(true)[“timestamps”] =>布尔(真) [ “属性”:保护] => array(11){[“id”] => string(1)“9” [ “数量”] => string(1)“6”[“topic”] => string(1)“2”[“topic_old”] => string(10)“War Effort”[“task”] => string(28)“你要我们收集 Moss?“[”objective“] => string(36)”收集信息包括 Q& A“[”method“] => string(29)”支持的历史研究“ [ “上下文”] => string(0)“”[“level”] => string(0)“”[“created_at”] => string(19)“0000-00-00 00:00:00”[“updated_at”] =>串(19) “0000-00-00 00:00:00”} [“original”:protected] => array(11){[“id”] => string(1)“9”[“number”] => string(1)“6”[“topic”] => string(1)“2” [ “topic_old”] => string(10)“War Effort”[“task”] => string(28)“你 希望我们收集莫斯?“[”objective“] =>字符串(36)”收集 信息包括Q& A“[”method“] => string(29)”支持 历史研究“[”context“] => string(0)”“[”level“] =>字符串(0) “”[“created_at”] => string(19)“0000-00-00 00:00:00”[“updated_at”] => string(19)“0000-00-00 00:00:00”} [“relations”:protected] =>阵列(0) {} [“hidden”:protected] => array(0){} [“visible”:protected] => array(0){} [“appends”:protected] =>数组(0){} [ “可填充”:保护] => array(0){} [“dates”:protected] => array(0){ } [“touches”:protected] => array(0){} [“observables”:protected] => array(0){} [“with”:protected] =>数组(0){} [ “morphClass”:保护] => NULL [“exists”] =>布尔(真) [ “softDelete”:保护] => bool(false)}
答案 0 :(得分:0)
您需要先调用您在模型中声明的关系。在这种情况下,我将使用Eager Loading
,with()
函数。
$tasks = $this->task->where('number', $id)->with('topic');
来源:http://laravel.com/docs/4.2/eloquent#eager-loading
我想将变量更改为
$tasks
因为使用了where()
,你会立刻得到Illuminate\Database\Eloquent\Collection
(许多结果)
你可以查看结果。
dd($tasks->get());