есть lastInsertId () для не первичного ключа?Попытка получить свойство ошибки необъекта - PullRequest
0 голосов
/ 05 апреля 2019

Я получаю Попытка получить свойство ошибки необъекта в $routine = $routine->getRoutine($event->routine_id); из-за $event->routine_id Но это немного странно, потому что когда я var_dump($event) $event->routine_id на самом деле имеет значение и теперь смотрю на мою функцию getEventsbydate Однако в прошлый раз у меня была та же ошибка, поэтому я пытаюсь использовать $this->routine_id = $this->_connection->lastInsertId(); для ручной отправки рутины но так как рутина_идентификатора не является первичным ключом таблицы, происходит сбой, есть ли функция, которая может отправлять столбец, который не является первичным ключом?

public function getEventsbydate($year, $month, $day)
{

    $stmt = $this->_connection->prepare("SELECT * FROM event WHERE year = :year AND month = :month AND day = :day");


    $stmt->execute(['year'=>$year,'month'=>$month, 'day'=>$day]);
    $this->routine_id = $this->_connection->lastInsertId();
    $stmt->setFetchMode(PDO::FETCH_CLASS, "Event_model"); //datatype user
    return $stmt->fetchAll(); 
}

public function index($y, $m, $d){

    $event = $this->model('Event_model');
    $event = $event->getEventsbydate($y, $m, $d);


    $routine = $this->model('Routine_model'); 
    $routine = $routine->getRoutine($event->routine_id);


    if($event == false){ //if there is nothing in the workout_list

        header("location:/Event/create/$y/$m/$d"); //mylist controller , create method
    }
    else{
        //whatever you would do here
        $this->view('routine/routine_index',$routine);
    }   
}

1 Ответ

1 голос
/ 05 апреля 2019

Функция MySQL LAST_INSERT_ID() возвращает значение auto_increment для последней вставленной строки.

Вы не выполняете INSERT.

Вы исполняете SELECT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...