Laravel - 一对多的关系不是单向的

mat*_*ick 2 php laravel

我在Laravel中遇到一个问题,在一对多关系中,如果从一侧("hasMany"一侧)使用它,则返回null,但另一方面("belongsTo"的一侧)返回包含对象.在我的例子中,一个类别可以有很多线程,所有线程都属于一个类别.

以下是相关代码:

类别:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    public $timestamps = false;
    protected $table = 'categories';

    public function threads() {
        $this->hasMany('App\Thread', 'category_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

线:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

    public function category()
    {
        return $this->belongsTo('App\Category');
    }
}
Run Code Online (Sandbox Code Playgroud)

在哪里我试图得到它:

Thread::with('category')->get();
$latestThread = dd(Category::find(1)->threads());
Run Code Online (Sandbox Code Playgroud)

每个表的结构如下:类别:

id, name, description
Run Code Online (Sandbox Code Playgroud)

线:

id, name, user_id, category_id
Run Code Online (Sandbox Code Playgroud)

(如果你想知道,dd输出null).如果您还有其他需求,请询问!

ose*_*tow 6

您错过了线程函数中的return关键字

public function threads() {
    return $this->hasMany('App\Thread', 'category_id');
}
Run Code Online (Sandbox Code Playgroud)