Как вызвать функцию Model с последующей красноречивой функцией в laravel - PullRequest
0 голосов
/ 28 января 2019

// controller.php

public function close(int $boxId): bool
{
    $box = Box::find($boxId)->close();
}

// model.php

public static function close()
{
    //need to update the is_open field to 0 for found Box
}

Я новичок в laravel, и я не уверен, что приведенный выше код возможен.Буду признателен, если вы мне поможете.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вам не нужно, чтобы оно было статичным.Следующее должно заставить его работать:

public function close()
{ 
    return $this->update([
        'is_open' => 0
    ]);
}

или Вы можете просто сделать это в вашем контроллере:

public function close(int $boxId): bool
{
    $box = Box::findOrFail($boxId);

    return $box->update([
        'is_open' => 0
    ]);
}

findOrFail() выдаст ModelNotFoundExceptionесли коробка не найдена.

0 голосов
/ 28 января 2019

вы можете сделать с помощью laravel eloquent локальная область действия

локальные области действия позволяют вам определять общие наборы ограничений, которые вы можете легко повторно использовать в своем приложении.Например, вам может понадобиться часто получать всех пользователей, которые считаются «популярными».Чтобы определить область, добавьте префикс метода модели Eloquent с областью действия

в model.php

public  function scopeClose($query,$flag)
{
    $query->where('is_open',$flag ?? 0);
    //need to update the is_open field to 0 for found Box
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...