【问题标题】:one to many relationship not working in Laravel一对多关系在 Laravel 中不起作用
【发布时间】:2020-10-28 23:50:18
【问题描述】:

我正在用 Laravel 做一个项目。我想返回客户的语言......但由于某种原因,我返回了一个空的响应。一位客户只能使用一种语言,而许多客户可以使用一种语言。

这是语言的模型:

public function customers()
    {
        return $this->hasMany('App\Customer', 'language_id', 'id');
    }

这是客户的模型:

public function language()
{
    return $this->belongsTo('App\Language', 'id', 'language_id');
}

这就是我试图返回的:

return Customer::where('customer_id', $customerId)->first()->language()->pluck('language_id');

我应该收到FRITEN...等值,但我只收到[]

可以帮忙吗?

【问题讨论】:

  • 你不需要idlanguage_id;这些是由您的模型名称和主键自动确定的 :) 您可以只使用 hasMany(Customer::class)belongsTo(Language::class),这实际上可能会解决它:)
  • 如果你像public function language() { return $this->belongsTo('App\Language', 'language_id')->withDefault(); }这样改变客户模型的关系,你会得到什么?
  • 我收到了正确的回报!

标签: laravel


【解决方案1】:

我认为你的关系有问题:

Customer Model:

public function language()
{
    return $this->belongsTo('App\Language',  'language_id','id');
}

就像doc 中的第二个参数belongsTo 应该是foreign_key 列。 如果您遵循 Laravel 命名列的约定,则可以省略它们

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 2021-12-08
    • 2020-05-30
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多