【问题标题】:Laravel and relationshipsLaravel 和关系
【发布时间】:2014-08-08 06:32:10
【问题描述】:

我已经创建了一些这样的表,

新闻(id、news_titles_id、create_time)

NewsTitles (id, name)

现在是我的模型:

class News extends Eloquent {
    protected $table = 'News';

    public function title() {
        return $this->belongsTo('newsTitles', 'news_titles_id');
    }
}

class NewsTitles extends Eloquent {
    protected $table = 'NewsTitles';
}

现在如果我尝试使用

$news = News::all();
echo $news->title->name;

我在标题上收到未定义的属性错误。

我在这里做错了什么?我错过了 Laravel 雄辩指南中的某些内容吗?

【问题讨论】:

    标签: php laravel database-relations


    【解决方案1】:

    您有如下表格:

    表:NewsTitles:(id,名称)

    表:新闻:(id, news_titles_id, create_time)

    模型:

    class NewsTitles extends Eloquent {
    
        protected $table = 'NewsTitles';
    
        public function news()
        {
            return $this->hasOne('News', 'news_title_id');
        }
    
    }
    
    class News extends Eloquent {
    
        protected $table = 'News';
    
        public function title()
        {
            return $this->belongsTo('NewsTitles', 'news_title_id');
        }
    
    }
    

    像这样使用:

    $news = News::with('title')->all(); // returns a collection (more than one)
    echo $news->first()->title->name; // Get first News
    echo $news->get(0)->title->name; // Get first News
    echo $news->get(1)->title->name; // Get second News
    

    或者你可以循环:

    foreach($news as $item) {
        echo $item->title->name;
    }
    

    【讨论】:

      【解决方案2】:

      我觉得应该是的

      return $this->hasOne('NewsTitle', 'news_title_id');
      

      因为新闻对象“有一个”新闻标题。

      NewsTitle 模型上,关系的倒数是

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-24
        • 2021-12-14
        • 2021-03-22
        • 2016-03-21
        • 2018-05-16
        • 2020-02-22
        • 2021-08-05
        • 2017-04-13
        相关资源
        最近更新 更多