雄辩的关系命名约定

时间:2015-07-22 20:32:28

标签: php laravel eloquent laravel-5

我有类别的文章

每篇文章都属于一个类别。

每个类别都有很多文章

文章db name是“articles”

categoery db name是“article_categories”

class Article extends Model
{
    public function category()
    {
        return $this->belongsTo('App\ArticleCategory');
    }
}
class ArticleCategory extends Model
{
    public function articles()
    {
        return $this->hasMany('App\Article');
    }
}

现在我的问题是:如何在存储类别ID的文章中命名列?

我尝试命名它:

article_category_id
articleCategory_id
article_categories_id
articleCategories_id

所有这些都不像我一样工作

$article->category 

雄辩地运行此查询:

select * from `article_categories` where `article_categories`.`id` is null limit 1

感谢

2 个答案:

答案 0 :(得分:0)

如果您在命名字段时遇到麻烦,可以设置自己的密钥:

public function category()
{
    $this->belongsTo('App\ArticleCategory', 'local_key', 'parent_key');
}

所以你不必知道Eloquent使用的命名召集。

答案 1 :(得分:0)

article_category_id应该是正确的。

您可以尝试替换此代码

class Article extends Model
{
    public function category()
    {
        return $this->belongsTo('App\ArticleCategory');
    }
}

如果可行的话,使用下面的代码 class Article扩展Model

{
    public function category()
    {
        return $this->belongsTo('App\ArticleCategory', 'article_category_id');
    }
}