apis试图获得非物体laravel的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apis试图获得非物体laravel的属性相关的知识,希望对你有一定的参考价值。

我有一个打开功能,在其中我显示我的会话变量,我这样做

        $id=Session::get('id_player');
        $jugador=Jugador::find($id);
        $dinero=$jugador->saldo;
        echo "<script>alert('".$dinero."')</script>";

在那一刻,它向我显示了相关的值,一切都很好但是当我去api的端点,并且我把句子(没有JS脚本)它表明这个错误ErrorException:试图获得非'saldo'的属性-宾语

我尝试将变量作为数组访问($ dinero = $ jugador ['saldo'];)并且它也不起作用,就像我没有采用会话变量一样,因为它是不需要的值

答案

关于错误

正如错误所述。这意味着$ jugador是null。

检查和分配变更

$id=Session::get('id_player');
$jugador=Jugador::find($id);
$dinero=$jugador->saldo;
echo "<script>alert('".$dinero."')</script>";

$id=Session::get('id_player');
//findOrFail instead of find method to through error for model not found
if ($jugador = Jugador::find($id)) { 
    $dinero=$jugador->saldo;
    echo "<script>alert('".$dinero."')</script>";
}

为什么会话变量在api上为null?

会话在API上不存在默认值。您需要将其添加到API中间件。但我不推荐它。创建一个名为“sessions”的新中间件条目,并为其添加“start session”。喜欢这个

应用程序/ HTTP / Kernel.php

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
       IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
        IlluminateSessionMiddlewareStartSession::class,
        // IlluminateSessionMiddlewareAuthenticateSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],

    'api' => [
        'throttle:60,1',
        'bindings',
    ],
    //add this middleware to the routes you expect sessions to work
    'sessions' => [
        IlluminateSessionMiddlewareStartSession::class,
    ]
];

路线/ api.php

Route::group(['middleware' => ['sessions']], function () { 
    Route::post('autentificacion_api_GamePlay',
                  'APIGamePlayController@autentificacion'); 
});

以上是关于apis试图获得非物体laravel的属性的主要内容,如果未能解决你的问题,请参考以下文章

试图获得非对象 Laravel 的属性“浴室”

Laravel 5.5 - 试图获得非对象的属性

错误:试图在 Laravel 中获取属性 ID 错误(非对象)

我在 laravel 中的递归函数不调用自己

laravel 试图获取非对象的属性

Laravel Join:试图获取非对象的属性