我试图将一个对象保存到数据库中,用于在网站上构建的游戏,但我一直收到此错误:
Creating default object from empty value
下面是我使用的代码:
foreach( $input['items'] as $key=>$itemText ){
$item = ($input['itemIDs'][$key] === 'NA') ? new GameItem() : GameItem::find($input['itemIDs'][$key]);
// if updating this item, check that it is assigned to this game
if( !is_null($item->game_id) && $item->game_id != $game->id ){ continue; }
$item->game_id = $game->id;
$item->item = $itemText;
$item->answer = $input['answers'][$key];
$item->save();
}
错误发生在if语句中。我尝试注解掉它,然后错误发生在$item->game_id = $game->id;线。
我已经var_dump了$item和$game,它们都是有效的Eloquent对象。我甚至var_dump了if语句的结果,没有任何问题,所以我不知道发生了什么。
我只是注意到如果我这么做
var_dump($item->toArray()); die();
$item->保存();行,它不会抛出任何错误,并向我显示数组刚刚好。
那会是什么问题呢?我想这和保存物品有关,但我一点也不明白。
1条答案
按热度按时间daolsyd01#
下面这一行:
始终不返回
GameItem
对象,因此当您尝试在NULL
值上使用property
时,会出现此错误。因此,您应该始终使用以下方法检查$item
是否不是NULL
:而不是这样(在使用
$item->game_id
之前,首先确保$item
不是NULL
):