如何在laravel中访问我的模型?

时间:2017-02-28 19:15:00

标签: laravel-5

我似乎无法弄清楚这段代码有什么问题。我正在运行laravel 5.4。

错误: https://www.dropbox.com/s/64ioxdf4mv6ps1w/Screenshot%202017-02-28%2020.11.33.png?dl=0

控制器功能:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Thread extends Model
{
    public function messages()  
    {
        return $this->hasMany(Message::class)->get();
    }


}

模特:

assertEqual

2 个答案:

答案 0 :(得分:3)

我建议添加您的错误代码而不是链接到图片(现在AWS已关闭,因此我无法查看图像)。

无论如何,messages方法定义了一个关系,因此,它是查询构建器的一个实例。我没有在那里链接get方法,而是建议采用略有不同的方法:

在您的控制器中

public function show($id)
{
    // Use first() instead of get() since you're returning a
    // specific model by its primary key (I assume)
    return Thread::where('id', $id)->with('messages')->first();
}

在你的模特中

public function messages()
{
    // This returns a query builder instance, which is what you want.
    // It defines the relationship between Thread and Message
    return $this->hasMany(Message::class);
}

这将eager load您的消息以及Thread模型。

希望它有所帮助!

答案 1 :(得分:1)

关于乔尔在评论中提出的问题......

用户::发现(1) - &GT;消息 - &GT;创建($请求 - &GT;仅( '主体'));

没有调用你提到的'messages function'而没有返回关系。相反,它正在调用消息属性,这是不同的。