Laravel - 查询自引用表

时间:2014-05-08 15:12:19

标签: mysql laravel-4 multilingual self-referencing-table

我有一个自我引用表,其中包含新闻及其各自的翻译作为孩子。我要做的是查询要在我的索引新闻页面中显示的每个父新闻的翻译语言。 在索引新闻页面中,我有一个表格,其中显示我的所有父新闻:

  • title
  • 父母新闻语言
  • 儿童新闻语言(翻译)(这是我的问题!)
  • 编辑
  • 删除

有了这个,我想自动查看新闻写入的原始语言,并检查它是否已被翻译。

我的代码是这样的:

语言
- id
- 代码

Newss
- id
- parent_id
- lang_id
- 标题
- 身体

模型

Language.php

class Language extends Eloquent {

    public function news() {
        return $this->hasMany('News');
    }
}  

News.php

class News extends Eloquent {

    protected $table = 'newss';

    public function language() {
        return $this->belongsTo('Language','lang_id');
    }

    public function parent_news() {
        return $this->belongsTo('News','parent_id');
    }

    public function child_news() {
        return $this->hasMany('News','parent_id');
    }

}

有谁知道如何查询这样的内容? 我相信这可能不是检查翻译的最佳解决方案,所以如果有人有任何建议来简化这个想法,我很高兴收到你的来信。

谢谢,

1 个答案:

答案 0 :(得分:0)

class News extends Eloquent {
    protected $table = 'newss';
    function newss(){
        return $this->hasOne('News', 'parent_id');
    }

文档说,对于自联接,请使用hasOne方法。

然后:

News::find($news->id)->news()->whereRaw('parent_id= parent_id')->get();