Laravel 4 Eloquent - 如何获取对象属性

时间:2014-04-08 16:32:11

标签: php laravel laravel-4

我有两个模型,Topic Model和Post Model。主题可以有多个帖子。

public function posts()
{
    return $this->hasMany('FPost');
}

现在要获取一个主题的最新帖子,我正在做类似以下的

public function latestPost()
{
    return $this->posts()->where('f_topic_id',"=",$this->id)->take(1);

}

然后我得到最新的帖子属性(对于特定主题)

{{$topic->latestPost()->first()['title']}}

现在,我已经尝试了很多,但似乎这对我不起作用

{{$topic->latestPost()->first()->title}}

我的问题是为什么我无法获得帖子模型的属性?

更新.. 主题模型看起来像这样

class FTopic extends Eloquent {
    protected $fillable =['topictitle','topicdescription'];

    public function forumCategory()
    {
        return $this->belongsTo('FCategory');
    }

    public function user()
    {
        return $this->belongsTo('User');
    }

    public function posts()
    {
        return $this->hasMany('FPost');
    }

    public function latestPost()
    {
        return $this->posts()->where('f_topic_id',"=",$this->id)->take(1);

    }




    public $rules = [
        'topictitle' => 'required|min:10',
        'topicdescription' => 'required|max:10'
    ];

    public  $errors;

    public function isValid()
    {
        $validation = Validator::make($this->attributes, $this->rules);
        if($validation-> passes())
            return true;
        $this->errors = $validation->messages();
        return false;
    }







    protected $table = 'ftopics';



} 

更新2 这就是我使用它的方式。 Usage 谢谢

1 个答案:

答案 0 :(得分:0)

latestPost方法更改为:

public function scopeLatestPost($query)
{
    return $this->posts()->orderBy('id', 'desc');
}

然后使用这样的东西:

$ptitle = FTopic::find(1)->latestPost()->first()->title;