【问题标题】:Where 0 = 1 in Laravel BelongsTo Relationship Query LogLaravel BelongsTo 关系查询日志中的 0 = 1
【发布时间】:2019-12-05 12:08:47
【问题描述】:

我只是想使用BelongsTo 关系来检索记录, 方案如下:

roles:
- id
- title
users:
- id
- Role_ID

我将SQL Server 用于数据库,所以Role_ID 可以指向role_id 我认为:D。

这是User模型中的属于关系的代码:

public function role()
    {
        return $this->belongsTo('App\Role');
    }

我也试过这样:

public function role()
    {
        return $this->belongsTo('App\Role', 'id', 'Role_ID');
    }

但是无论参数是什么它都不起作用,当我得到查询日志时,它看起来像:

bindings: []
query: "select * from [roles] where 0 = 1"
time: 1.49

这是我尝试访问Controller 中的关系的方法:

User::with(['role'])->get($someColumns)

我只是多次与这个问题作斗争,但不知道问题出在哪里。

感谢任何帮助。

谢谢大家。

【问题讨论】:

  • 您如何尝试访问关系?
  • 让我编辑问题@Etin
  • 我已经编辑了问题,请立即查看@Etin
  • 同样的问题,当您在定义关系时出现拼写错误,它应该生成错误的查询而不是“where 0=1”

标签: sql-server laravel eloquent relationship


【解决方案1】:

您必须在 get() 列中包含外键

User::with(['role'])->get(Role_ID, OthersColumns)

【讨论】:

    【解决方案2】:

    在你的模型中尝试这种关系。

    public function role()
    {
       return $this->belongsTo('App\Role', 'Role_ID','id');
    }
    

    【讨论】:

    • 是的,它有效,但在某些情况下,我似乎遇到了其他问题。
    • 它帮助了我投票的原因,但它并没有解决我的问题,谢谢哥们:)
    【解决方案3】:

    谢谢大家,@Dilip 提示帮助我解决了问题。

    请在这一行查看我更新的问题:

    User::with(['role'])->get($someColumns)
    

    实际上问题出在 $someColumns 上,因为当我在 get 中提到某些列的名称时,它导致了问题,但是当我将其替换为以下内容时:

    User::with(['role'])->get()
    

    成功了,

    所以简单的解决方案是在获取关系belongsTo时不要提及列名

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 2019-02-15
      • 2018-08-05
      • 1970-01-01
      • 2019-05-26
      • 2019-05-10
      • 2018-08-06
      • 2018-03-08
      • 2020-01-15
      相关资源
      最近更新 更多