【问题标题】:Eloquent relationship doesnt work on production雄辩的关系不适用于生产
【发布时间】:2019-05-22 17:55:17
【问题描述】:

所以我正在编写一个代码,用户可以在其中邀请人们​​使用他们的推荐代码进行注册。用户应该能够使用关系 $user->invitees() 来确定他邀请的人。它在本地工作得很好。但在生产中,它没有。

public function invitees()
{
    return $this->hasMany('App\User', 'referrer', 'referral_code');
}

我知道这是因为在某些情况下关系可能会返回 null:

referrer 和 refer_code 字段可能为 null(在某些情况下,例如当用户直接注册而没有被某人邀请时)从而导致 invitees() 关系返回 null

我在某处读到这可能是原因。

这是真的吗?如果是,我该如何解决?

【问题讨论】:

  • 嗨,你的错误是什么?您是否尝试检查 $invitees = $user->invitees() ? $user->invitees() : 0;
  • 错误是当我知道它不应该返回一个空集合时它返回一个空集合
  • 您确定表格中的数据没有问题吗?您是否检查过该案例的 sql 查询?我问你是因为你很难过,这在开发环境中是可以的。
  • 如果你运行代码 $invitees = $user->invitees(); if (!$invitees->isEmpty()) { "do what you have to do" } 有用吗?

标签: php laravel orm eloquent relationship


【解决方案1】:

在这种情况下,您可能需要使用 $user->invitees - 不带 ()- 因为它返回关系的函数。

也许您会遇到用户没有邀请的情况,因此您需要使用

进行验证
if($user->invitees->count()) {}

如果计数 > 0,则为真。

请尝试让我知道...如果您收到错误,请在此处粘贴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 2021-12-15
    • 2019-05-10
    相关资源
    最近更新 更多