【发布时间】:2015-07-21 15:43:07
【问题描述】:
我的模型中有字段名称是数字(我无法控制它的名称)。 当我尝试从我的模型中获取值时,我得到一个异常,在拥有这些字段之前一切都很好
在添加数字字段之前,这工作正常。
Model::find($id)->name;
我收到Trying to get property of non-object
我尝试使用 protected hidden 数组将它们从我的 JSON 中隐藏,但 '0'、0 或 '{0}' 似乎都不起作用。
这是错误
{
"errors": "Sorry, something went wrong.",
"exception": "Symfony\\Component\\Debug\\Exception\\FatalErrorException",
"message": "Uncaught exception 'ErrorException' with message 'Trying to get property of non-object' in /home/david/workspace/papw2/jukebox/api/app/AlbumComment.php:18\nStack trace:\n#0 /home/david/workspace/papw2/jukebox/api/app/AlbumComment.php(18): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'Trying to get p...', '/home/david/wor...', 18, Array)\n#1 /home/david/workspace/papw2/jukebox/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2669): App\\AlbumComment->getUserAttribute(NULL)\n#2 /home/david/workspace/papw2/jukebox/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2681): Illuminate\\Database\\Eloquent\\Model->mutateAttribute('user', NULL)\n#3 /home/david/workspace/papw2/jukebox/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2435): Illuminate\\Database\\Eloquent\\Model->mutateAttributeForArray('user', NULL)\n#4 /home/david/workspace/papw2/jukebox/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2379): Illuminate\\Dat",
"trace": []
}
正确的语法是什么?
【问题讨论】:
-
标识符可以以数字开头,但除非被引用,否则可能不仅仅由数字组成。尝试使用像 ` 0 ` 这样的反引号:
-
您在这里遇到了两个不同的问题。一个是
Trying to get property of non-object。这可能是由Model::find($id)返回null引起的。另一个问题是您的数字列名。目前无法隐藏它们,其他功能可能也无法正常工作。这主要是由于 PHP 的输入方式非常错误...... -
所以,除非我破解 laravel,否则这是不可能的。谢谢。
-
矢量面团你接受了我的回答我想知道黑客是否对你有用。我打开一个问题github.com/laravel/framework/issues/8710,我希望大老板@lukasgeiter 可以提供帮助:)
-
我解决了这个问题并进行了重构,因此不再有编号的列。也许这个周末我可以测试一下。