【问题标题】:Recommended eloquent relationship for two models推荐两个模型的雄辩关系
【发布时间】:2019-03-19 07:22:27
【问题描述】:

如果这个问题过于具体,我提前道歉,但我很难在这两个模型之间选择正确的雄辩关系。我有两个模型,一个名为“Package”(例如旅行套餐),另一个名为“Country”。一个包只能有一个国家,一个国家可以有多个包。这是我的关系:

class Package extends Model
{
    public function country()
    {
        return $this->belongsTo('App\Country');
    } 
}    

// Country
class Country extends Model
{
    public function packages()
    {
        return $this->hasMany('App\Country');
    } 
}    

这是正确的关系吗?当我使用以下关系并想使用以下代码获取包含国家/地区信息的软件包集合时:

$packages = Package::with('country')->get();

我在国家/地区的回复中收到NULL。我做错什么了吗?感谢您的帮助。

PS:这是我的数据库结构:

Country:
    `id`
    `iso_code`
    `name`
    `phone_code`

Package:
    `id`
    `title`
    `description`
    `date_from`
    `date_to`
    `price`
    `country_id`

【问题讨论】:

  • 你的两个表的数据库表结构是什么样的?
  • @DelenaMalan 我已经编辑了我的问题并添加了表格的结构
  • 在您的 Country 类中,您必须删除 Country 方法。在那个类中,您需要调用 Package,因为它是一个“有很多”关系,所以最好将它写成复数 'Packages',这样你就知道它返回多个包。

标签: laravel eloquent laravel-5.7 eloquent-relationship


【解决方案1】:

试试这个

// Package
class Package extends Model
{
    public function country()
    {
        return $this->belongsTo('App\Country');
    } 
}    

// Country
class Country extends Model
{
    public function packages()
    {
        return $this->hasMany('App\Package', 'country_id', 'id');
    } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2013-06-04
    • 2016-11-26
    • 2018-02-19
    • 2019-04-18
    • 2015-06-27
    相关资源
    最近更新 更多