php 数据库\查询\生成器::update():参数#1($values)必须是数组类型,指定stdClass,

ia2d9nvy  于 2022-12-10  发布在  PHP
关注(0)|答案(2)|浏览(108)

如何将stdClass转换为Array以更新Laravel中的DB?
第一个
我试过array($currentSubscriptionTransaction),但不起作用。

aiazj4mn

aiazj4mn1#

试试这个:

$subscription_transaction_to_update = DB::table('subscription_transactions')->where('id', $currentSubscriptionTransaction->id)->first();

            if (!is_null($subscription_transaction_to_update)) {
                DB::table('subscription_transactions')->where('id', $currentSubscriptionTransaction->id)->update(
                    ($currentSubscriptionTransaction->toArray()) // this has to be an array
                );
}

使用Eloquent Model以更简洁的方式执行相同操作

SubscriptionTransaction::firstOrCreate($currentSubscriptionTransaction->toArray());
ej83mcc0

ej83mcc02#

嗯......也许,你应该更好地使用一些helper functions,比如collect()toArray()?如果你的laravel版本是5.7,请参见https://readouble.com/laravel/5.7/en/helpers.html
Laravel提供一些有用的方法或提示属于您的laravel应用程序版本。
例如,如果你使用一个DB表,这个框架在Models/下有model.php比如SubscriptionTransactions那么,你能在下面试试这些代码吗?

use App\Models\SubscriptionTransaction;
    $subscriptionTransactionToUpdate = SubscriptionTransaction::firstWhere('id', $currentSubscriptionTransaction->id);

    if ($subscriptionTransactionToUpdate) {
        $currentSubscriptionTransaction = new stdClass();
        $subscriptionTransactionToUpdate->update(collect($currentSubscriptionTransaction)->toArray());
    }

相关问题