如何在Laravel 4中获取与命名空间模型相关的模型字段?

时间:2014-03-12 19:16:57

标签: model laravel namespaces laravel-4 relationship

好的我有那些模特

应用程序/模型/ article.php

<?php 
namespace Models;

class Article extends \Eloquent {

    protected $table = 'articles';

    public function author() {
        return $this->belongsTo('Models\Author');
    }
}

应用程序/模型/ author.php

<?php 
namespace Models;

class Author extends \Eloquent {

    protected $table = 'authors';

    public function article() {
        return $this->hasMany('Models\Article');
    }
}

现在让我们用控制器进行测试

应用程序/控制器/管理/ TestController.php

<?php
namespace Admin;

use Models\Article;

class TestController extends BaseController {

    public function test()
    {
        $article = Article::first();
        sd($article->author->id);
    }
}

现在当我路由到Admin\\TestController@test时,我得到了这个例外

尝试在sd($article->author->id);

上获取非对象的属性

为什么呢?我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果你之前没有遇到任何错误,那几乎所有工作都是如此:

$article = Article::first();

实际上与

相同
$article = \Models\Article::first();

但如果$article->author不是对象,则因为articles表为空或者authors与{{1}之间没有关系集(在数据库中) }}