【问题标题】:Laravel strange behavior in 1 to Many relationshipLaravel 一对多关系中的奇怪行为
【发布时间】:2020-09-21 06:36:17
【问题描述】:

Laravel 1 to Many 关系中非常奇怪的情况, 我的用户模型

public function reminder(){

        return $this->hasMany(Reminder::class);
    }

提醒模型

public function user(){

        return $this->belongsTo(User::class);
    }

当我试图得到时

dd(auth()->user()->reminder) -> null
$user_id = auth()->user()->id;
$user = User::findOrFail($user_id);
dd($user->reminder) -> success I got results.

问题是为什么我无法使用 auth()->user()->reminder 获得关系结果???

【问题讨论】:

  • 我认为是因为(),试试auth()->user->reminder,当你使用auth()->user()时,它返回集合而不是模型
  • @AmirJani 我试过了,但它给出了这个错误 Undefined property: Illuminate\Auth\AuthManager::$user
  • @MuhammadTariq 尝试像这样删除括号:auth()->user->reminder

标签: laravel laravel-5 eloquent model


【解决方案1】:

您可能忘记将模型类导入相应的模型中

用户.php

use App\Reminder;

public function reminders()
{
    $this->hasMany(Reminder::class, 'user_id');
}

【讨论】:

  • 当我们使用 Reminder::class 时,我们实际上不需要使用 App\Reminder,它也不起作用!
  • 您是否将 'auth' 中间件添加到您的路由中?尝试 dd auth()->user(),它返回的是 null 还是经过身份验证的用户对象? auth()->user() 仅在将 auth 中间件放入控制器方法时才会返回用户对象
  • 它的返回对象!
  • 您确定经过身份验证的用户在 DB 中有提醒吗?
  • 以上的解决方法你试过了吗? $request->user()->reminder;
【解决方案2】:

修改你的公共函数提醒() 为提醒(){.....} 另外你也可以试试

public function reminders(){
    return $this->hasMany(Reminder::class, 'user_id', 'id'); 
}

【讨论】:

  • $user = User::findOrFail($user_id); dd($user->reminder) 如果通过它获取集合,auth() 使用Auth有问题;并尝试 Auth::user()->reminder;
  • 还有其他问题!我已经尝试了所有这些可能的解决方案!
【解决方案3】:

我用空的 laravel 运行了不太新鲜的 laravel 5.8 安装。两种方法都对我有用。我只需要确定我的用户已经登录并且命名空间是绝对的。我刚刚将您的代码放入 routes/web.xml 中。这是我的代码:

Route::get('/', function () {
    \Auth::loginUsingId(1);
    dd(auth()->user()->reminder);
    $user_id = auth()->user()->id;
    $user = \App\User::findOrFail($user_id);
    dd($user->reminder); 
 });

请检查是否对您有帮助。

【讨论】:

    【解决方案4】:

    Auth 登录用户实际上是从另一个表(即管理员)获得的 id

    将关系转移到 Admin Call 确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多