我有两个模型,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 这就是我使用它的方式。 谢谢
答案 0 :(得分:0)
将latestPost
方法更改为:
public function scopeLatestPost($query)
{
return $this->posts()->orderBy('id', 'desc');
}
然后使用这样的东西:
$ptitle = FTopic::find(1)->latestPost()->first()->title;