Laravel雄辩关系函数名

pkwftd7m  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(94)

我有两个表,这是职位和类别。职位和类别之间的关系是多对一的。所以post类模型中的代码是这样的:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;

    protected $guarded = ['id'];

    public function category()
    {
        return $this->belongsTo(Category::class);
    }
}

字符串
使用该代码,应用程序可以成功运行。
问题是,当我试图将category函数名称更改为categories时,我试图像这样访问文章的category名称:Post::first()->categories->name,laravel给予an error like this
(编辑
“Post::first()->category”返回文章的类别,当雄辩的函数名为category时。但是当我尝试改变categories这样的函数的名字并使用“Post::first()->categories”访问它时,它返回一个null

我试着用随机名称来改变类别类模型中的雄辩关系函数的名称,但我仍然可以访问它,laravel没有给予错误。category类模型的代码是这样的

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    use HasFactory;
    protected $guarded = ['id'];

    public function posts(){
        return $this->hasMany(Post::class);
    }
}


有没有人能帮我一下,为什么我可以在类别类模型中更改雄辩函数的名称,但不能在后类模型中?

9rnv2umw

9rnv2umw1#

执行以下操作应该有效:

public function categories()
{
    return $this->belongsTo(Category::class, 'category_id', 'id');
}

字符串
让我知道它是否有效。

相关问题