Почему модель / переменная сохраняет свое значение? - PullRequest
1 голос
/ 26 февраля 2020

У меня проблема с моим кодом в Laravel Framework. То, что я пытаюсь сделать, это продать метод внутри модели. Проблема в том, что переменная $ сохраняет свое значение до следующего выполнения кода. Как мне сделать так, чтобы все работало так, как я хочу?

/// Model method.
public  function Sell()
{
    $this->UserData->increment('gold', ($this->ItemData->price / 100) * 80);
    $this->delete();   
    return null;
 }


 ///in controller 
 $user = \Auth::user();
 $user_item = UserItems::find(10);
 $user_item->Sell();

 return $user_item->ItemData->name; /// Returns full data about model even if I deleted it/sold. After next refresh, returns null/error.I want it to return null since beginning.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я не знаю, что вы пытаетесь сделать, но приведенный ниже код решит вашу проблему -

/// Model method.
public  function Sell()
{
    $this->UserData->increment('gold', ($this->ItemData->price / 100) * 80);
    $this->delete();
    $this->ItemData = $this->ItemData->fresh() 
    return null;
 }


 ///in controller 
 $user = \Auth::user();
 $user_item = UserItems::find(10);
 $user_item->Sell();

 return $user_item->ItemData->name; /// Returns full data about model even if I deleted it/sold. After next refresh, returns null/error.I want it to return null since beginning.
0 голосов
/ 26 февраля 2020

Даже если вы удалили запись из базы данных с помощью $this->delete(), переменная $user_item по-прежнему будет содержать ссылку на заполненную модель, пока сценарий не завершится или вы не уничтожите переменную.

Похоже, что вы хотите вернуть результат функции sell(). В вашем случае это будет

///in controller 
$user = \Auth::user();
$user_item = UserItems::find(10);
$user_item->Sell();

return $user_item->Sell(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...