当我试图把孩子放进$ with时,Laravel Eloquent回归500

时间:2017-09-12 07:18:18

标签: php laravel eloquent

这是我的雄辩代码:

class TestType extends Model
{
    protected $with = ['parent', 'children'];

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

    public function parent(){
    return $this->belongsTo('App\Models\TestType', 'parent_id', 'id');
    }

    public function children(){
        return $this->hasMany('App\Models\TestType', 'parent_id', 'id');
    }
}

Eloquent有自己的孩子和父母。这会返回HTTP ERROR 500.我会在 $ with

中删除后立即生效

当我只是从类似控制器调用它时,它也有效:

$testType = TestType::where('id', 1)->first();
return $testType->children;

你能帮我吗?

2 个答案:

答案 0 :(得分:1)

当我从控制器

调用with时,它有效

TestType::with(['children','parent'])->get();

答案 1 :(得分:0)

如果您只想在回复中使用儿童,请执行此操作

$testType = TestType::with('children',function($query){
$query->where('id', 1);})->first();

使用dd()检查您获得的内容并确保在迁移中使用外键正确指定了关系

我希望如果不随意拍摄查询,这将有效。 :)