За последние 24 часа нас посетили 20606 программистов и 1107 роботов. Сейчас ищут 369 программистов ...

Условие при выборке из бд

Тема в разделе "PHP для новичков", создана пользователем Влади, 8 авг 2022.

  1. Влади

    Влади Новичок

    С нами с:
    2 июн 2022
    Сообщения:
    6
    Симпатии:
    0
    Добрый день, заранее извиняюсь, за тупость вопроса. В этом куске делается запрос в бд, если находит город, то во вьюшку отдаёт город с отзывами. Всё работает нормально. До этого при условии, что, если ничего не находит, был эксепшен с сообщением условно "такого нет". Попросили переделать поставить вместо исключения new City();
    Теперь сам вопрос, так понимаю от меня требуется добавление нового города в базу, если ничего из неё не нашлось. Как это лучше реализовать, и что возвращать? Или я не понимаю, что от меня хотят:(


    public function actionReview($id)
    {
    if (!empty($city = City::findOne($id))) {
    $reviews = $city->getReview()->all();

    return $this->render('review', [
    'city' => $city,
    'reviews' => $reviews,

    ]);

    } else throw new NotFoundHttpException('пустота');
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    не понимаешь чего хотят - переспроси...
    а так - что типа такого мб
    PHP:
    1. public function actionReview($id)
    2. {
    3. if (empty($city = City::findOne($id))) {
    4.    $city = new City();
    5. }
    6.  
    7. $reviews = $city->getReview()->all();
    8.  
    9. return $this->render('review', [
    10. 'city' => $city,
    11. 'reviews' => $reviews,
    12.  
    13. ]);
    14.  
    15. }
    и это - научись пользоваться тегами для вставки кода
     
    Влади нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @ADSoft

    3-5 строка

    PHP:
    1.  $city = City::findOne($id) ?: new City();
     
    Влади нравится это.
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Можно вообще findOrNew
     
    MouseZver нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    вообще отлично
    --- Добавлено ---
    PHP:
    1. public function actionReview( int $id ): mixed// type ???
    2. {
    3.     $city = City :: findOrNew( $id );
    4.    
    5.     $reviews = $city -> getReview() -> all();
    6.    
    7.     return $this -> render( 'review', compact ( 'city', 'reviews' ) );
    8. }