【问题标题】:Change stdClass property type更改 stdClass 属性类型
【发布时间】:2016-10-29 01:21:38
【问题描述】:

我要为我的 stdClass 属性之一分配一个 User 模型(对象),这是我的 stdclass 作为通过 DB 获取的查询结果:

{#803 ▼
+"user": 84
+"id_list": "7,1"
+"total": "125002.00"
+"settlement_id": null
+"bank_code": null
+"gateway_id": null
+"settlement_date": null
}

如果我尝试将User 模型分配给user 属性,则会抛出异常:

App\User 类的对象无法转换为 int

这是我尝试将用户模型分配给 stdclass 的方式

// $settlements is an array containing stdClasses
// $user_list is an array containing User models

foreach($settlements as $settlement){
        foreach($user_list as $user){
            if($settlement->user == $user->id){
                $settlement->user = $user;
            }
        }
    }

【问题讨论】:

  • 先将其转换为(array)$variable,然后做一些事情
  • 您如何分配user 属性?我们可以看看代码吗?

标签: php laravel casting stdclass


【解决方案1】:

知道了,删除以下行:

 if ($user > 0) {
                return response()->json('Success');
    }

【讨论】:

    【解决方案2】:

    您的$settlement->user 很可能是一个对象,PHP 尝试将其转换为整数,同时在以下行进行比较:

    if($settlement->user == $user->id){

    在执行比较之前,您需要确保它不是已经分配的对象,例如:

    if (!is_object($settlement->user) && $settlement->user == $user->id)

    if (!$settlement->user instanceof User && $settlement->user == $user->id)

    (假设$userUser 类的实例;将其更改为实际情况)

    【讨论】:

    • 感谢您的回复,但您的假设不正确,错误发生在 if 子句中,当我尝试将 User 模型对象分配给已包含整数的 $settlement->user
    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2011-07-27
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多