Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:使用foreach时获取会话ID会奇怪地截断_Php_Laravel_Session_Eloquent - Fatal编程技术网

Php Laravel:使用foreach时获取会话ID会奇怪地截断

Php Laravel:使用foreach时获取会话ID会奇怪地截断,php,laravel,session,eloquent,Php,Laravel,Session,Eloquent,所以这有点奇怪。。。在Laravel5.2中,我试图从会话数据库表中检索id。我使用Artisan生成的默认会话迁移 Session.php(会话模型,这是我的全部): 执行dd($id)仅截断到字符串中任何字母前的第一个数字;在本例中,402。如果没有初始数字,则返回0 这有什么原因吗?不幸的是,因为在运行dd之前我没有操作任何东西,所以我无法弄清楚这个字符串是怎么回事。当您调用$session->id时,它从您的模型调用php magic method\u get,然后从该方法调用getAt

所以这有点奇怪。。。在Laravel5.2中,我试图从会话数据库表中检索id。我使用Artisan生成的默认会话迁移

Session.php(会话模型,这是我的全部):

执行
dd($id)仅截断到字符串中任何字母前的第一个数字;在本例中,
402
。如果没有初始数字,则返回
0


这有什么原因吗?不幸的是,因为在运行
dd
之前我没有操作任何东西,所以我无法弄清楚这个字符串是怎么回事。

当您调用
$session->id
时,它从您的模型调用php magic method
\u get
,然后从该方法调用
getAttribute
方法,然后从中调用
getAttributeValue
getAttributeValue
它调用一些其他方法,然后检查它
hasCast
然后从该方法()调用
getCasts

正如您在主键中看到的,它添加了一个默认的强制转换
int
,因此对于您的问题,您可以选择
cast

protected $casts = [ 'id' => 'string', ];//This part is taken from the comment of z3r0ck
或者只需添加
$keyType

protected $keyType = 'string';

你能发布你的
会话
模型吗?@z3r0ck当然,我更新了我的问题。我最初的想法是模型中可能有类型转换。但事实并非如此。我不知道为什么会发生这种情况,但您得到的值的行为就像它被类型转换为
int
。尝试将此添加到您的模型中<代码>受保护的$casts=['id'=>string',]@z3r0ck很有趣,很有效。非常感谢。我想知道是什么原因导致了这一切?或者它可能是某种奇怪的PHP错误?在幕后,laravel正在将所有
id
属性转换为
int
。是否有
$keyType
属性的文档?一个链接将是伟大的,如果有!谢谢
protected $casts = [ 'id' => 'string', ];//This part is taken from the comment of z3r0ck
protected $keyType = 'string';