【发布时间】:2016-01-23 11:31:48
【问题描述】:
我有这个功能:
public function getReward($formattedArray, $key){
$id = $formattedArray[$key][0];
//dd($id); //Returns 1
$reward = Item::find($id);
return $reward;
}
问题部分是:
$reward = Item::find($id);
我有 dd() id 变量,它返回预期值 1,然后在最后的静态查找函数中使用。然后我使用此功能“尝试获取非对象的属性”收到错误。
然后我这样做:
$reward = Item::find($id); //Changed to...
$reward = Item::find(1);
唯一的区别是我手动将整数 1 输入到静态查找函数中。代码完美无误,我可以访问返回的对象。
工作示例:
$reward = Item::find(1);
return $reward;
工作示例:
$reward = Item::find("1");
return $reward;
非工作示例:
$reward = Item::find($formattedArray[$key][0]);
return $reward;
我也尝试过像这样转换为整数:
$id = $formattedArray[$key][0];
$idInt = (int) $id;
$reward = Item::find($idInt);
return $reward;
【问题讨论】:
-
你的静态函数查找代码在哪里?
1不是对象(原始数据类型),所以我感觉它与输入的问题无关,还有你的数组是什么值? -
可能是 Item::find() 内部的问题。但在此之前,试试这个: $id=1;然后尝试调用 Item::find($id)。如果您仍然遇到问题,请给我们 Item::find() 的代码
-
find() 是 Eloquent 中用于 Laravel 框架的函数。它将一个整数作为 ID,并使用该 ID 从数据库中提取记录。手动在 find() 中输入 1 就可以了。但是当我从我的多维数组中获取整数 1 时,就不行了。希望这是有道理的
-
@DarrylChapman 你试过 $id=1 吗?尝试 var_dump($formattedArray[$key][0]) 以了解您获得的值的类型
-
var_dump($id),然后。确切地看到该值是什么。也许是1<br />什么的
标签: php mysql arrays laravel eloquent