【问题标题】:cannot get the relationship data in laravellaravel 中无法获取关系数据
【发布时间】:2020-06-03 03:59:45
【问题描述】:

这是我的功能

public function show($id)
    {
        $newproject = Newproject::find($id);
        $data = [

            'name' => $newproject->user->name
        ];

        return $data;
    }

新项目模型

public function user()
    {
        return $this->hasOne(User::class,'user_id' ,'id');
    }

总是报错

message: "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.user_id' in 'where clause' (SQL: select * from `users` where `users`.`user_id` = 1 and `users`.`user_id` is not null limit 1)"
exception: "Illuminate\Database\QueryException"
file: "C:\xampp\htdocs\larastart\vendor\laravel\framework\src\Illuminate\Database\Connection.php"
line: 669

请帮我解决我的问题。

【问题讨论】:

  • 你可以发布用户和新项目的专栏吗?
  • 请分享您的表结构
  • 我认为 Newproject 属于 User 更有意义,那么您将需要 newprojects 表中的 user_id 列。

标签: mysql laravel vue.js


【解决方案1】:

检查关系one-to-one reference foreign_key user_id 在 newprojects 表中,你需要建立这样的关系:

用户模型:

public function newproject()
{
   return $this->hasOne(Newproject::class,'user_id');
}

新项目模型:

public function user()
{
   return $this->belongsTo(User::class);
}

【讨论】:

    【解决方案2】:

    我觉得应该是这样的,

    public function user()
        {
            return $this->hasOne(User::class,'id' ,'user_id');
        }
    

    这意味着用户表的id 与当前模型的user_id 列匹配。如果您根据 laravel 有正确的命名约定,那么您不需要传递这个额外的参数。

    Laravel hasOne relation

    希望对你有帮助:)

    【讨论】:

      【解决方案3】:

      在我的模型中发现问题

      在用户模型中

      public function newproject()
          {
              return $this->belongsTo(Newproject::class,'user_id','id');
          }
      

      在新项目模型中

      public function user()
          {
              return $this->hasOne(User::class,'id' , 'user_id');
          }
      

      谢谢大家

      【讨论】:

        猜你喜欢
        • 2021-12-10
        • 2021-12-07
        • 2016-12-05
        • 2017-07-07
        • 2019-07-12
        • 2022-01-15
        • 2020-07-01
        • 2018-02-14
        • 2021-05-06
        相关资源
        最近更新 更多