php – Laravel 4 Eloquent返回错误的ID

php – Laravel 4 Eloquent返回错误的ID,第1张

概述我的数据库中有3个表: >广告系列 >用户 >公司 一家公司可能有一些用户.一个用户可能有一些活动.用户(具有管理员权限)可以对属于其公司的任何广告系列执行某些 *** 作.所以,我想检查是否 他是否正在与他的竞选活动进行这些行动(在最后一种情况下,我会返回“拒绝访问”之类的内容). 我的病情 Campaign::join('users', 'users.id', '=', 'campaigns.user 我的数据库中有3个表:

>广告系列
>用户
>公司

一家公司可能有一些用户.一个用户可能有一些活动.用户(具有管理员权限)可以对属于其公司的任何广告系列执行某些 *** 作.所以,我想检查是否
他是否正在与他的竞选活动进行这些行动(在最后一种情况下,我会返回“拒绝访问”之类的内容).

我的病情

Campaign::join('users','users.ID','=','campaigns.user_ID')        ->where('users.company_ID',Auth::user()->company->ID)        ->where('campaigns.ID',input::get('ID'))        ->first();

因此,如果我获得了独特的广告系列 – 没关系,如果我得到了空 – 出了点问题,我向用户发送了“拒绝访问权限”,因为他正在处理其他公司广告系列.

此代码生成下一个查询:

array(3) {  ["query"]=>  string(148) "select * from `campaigns` inner join `users` on `users`.`ID` = `campaigns`.`user_ID` where `users`.`company_ID` = ? and `campaigns`.`ID` = ? limit 1"  ["bindings"]=>  array(2) {    [0]=>    string(1) "2"    [1]=>    string(2) "13"  }  ["time"]=>  float(0.42)}

使用phpmyadmin我尝试了相同的查询并获得了ID = 13的广告系列.
但是当我调试我的应用程序时,我发现了这一点

dd($campaign->ID);

而是返回8. 8也等于campaign.user_ID(该记录同时包含campaign.ID和campaigns.user_ID = 8).

我无法弄清楚为什么会这样.即使我的SQL查询有问题(我怀疑是phpmyadmin返回正确的结果),我得到的条件为campaigns.ID = input :: get(‘ID’),其中input :: get(‘ID’)= 13.为什么ID正在改变?

当然,我可以分两步执行此安全检查,例如先获取广告系列,然后检查
$campaign-> user-> company-> ID = Auth :: user() – > company-> ID但只是想知道……

如果您在phpmyadmin中运行此查询,您应该可以看到结果包含名称为“ID”的多个列.当PHP将查询结果解析为关联数组或对象时,键必须是唯一的!如果键发生碰撞,将使用最后一列!

例:

sql结果:

ID    user_ID    name    ID    name    company_ID1     2          Camp1   2     Pelle   1

PHP结果:

array (size=1)  0 =>     object(stdClass)[131]      public 'ID' => string '2' (length=1)      public 'user_ID' => string '2' (length=1)      public 'name' => string 'Pelle' (length=5)      public 'company_ID' => string '1' (length=1)

要解决此问题,您可以添加一个select子句,仅选择广告系列列:

Campaign::select('campaigns.*')    ->join('users','campaigns.user_ID')    ->where('users.company_ID',Auth::user()->company->ID)    ->where('campaigns.ID',input::get('ID'))    ->first();
总结

以上是内存溢出为你收集整理的php – Laravel 4 Eloquent返回错误的ID全部内容,希望文章能够帮你解决php – Laravel 4 Eloquent返回错误的ID所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1258714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存