2013-11-13 6 views
1

Я использую RedBeanPHP 3.5.1 для ORM в моем проекте MVP (работает от Nette FW).Redbean: Как получить последний вставленный идентификатор принадлежащего Bean?

Мне нужно получить идентификатор последнего вставленного элемента, который принадлежит элементу из другой таблицы. Ниже вы можете найти метод, представляющий функциональные возможности, которые я только что описал:

public function createSite($userId, $siteName, $feedUrl, $reloadTime, $reloadRate){ 
    $site = R::dispense('site'); 
    $site->user_id = $userId; 
    $site->name = $siteName; 
    $site->feed = $feedUrl; 
    $site->reload_time = $reloadTime; 
    $site->reload_rate = $reloadRate; 

    $user = R::load('user', $userId); 
    $user->ownSite[] = $site; 
    $id = R::store($user); 

    return $id; 
} 

Теперь я хотел бы предположить, что линия

$id = R::store($user); 

будет хранить идентификатор сайта в $id переменной, поскольку она принадлежит уже существующему пользователю. Вместо этого он заполняет переменную идентификатором пользователя, для которой я больше не использую.

Так что мой вопрос: Как получить последний вставленный идентификатор принадлежащего ему компонента, который был создан только путем вызова метода R::store() на родительском (только что загруженном) bean-компоненте? Есть ли реализация этого в RedBean или мне нужно сделать это вручную?

Я просматривал каждый уголок веб-сайта проекта RedBeanPHP, но пока не повезло.

Спасибо за возможные предложения, ребята.

ответ

3

Используя здравый смысл, я, наконец, понял, как это решить, и поскольку никто не ответил на мой вопрос до сих пор, позвольте мне просто сделать это сам.

Поскольку R::store($user) способен хранить как $user и $site, нет никакой необходимости обманчиво хранить $site объект вручную.

Но если вам нужно получить последний вставленный идентификатор принадлежащего ему бина, на самом деле нет никакого вреда в этом. К Хранение $site объект рамки будут делать то же самое, а поверх этого он возвращает повторно ID.

Так правильная реализация метода выглядит следующим образом:

public function createSite($userId, $siteName, $feedUrl, $reloadTime, $reloadRate){ 
    $site = R::dispense('site'); 
    $site->user_id = $userId; 
    $site->name = $siteName; 
    $site->feed = $feedUrl; 
    $site->reload_time = $reloadTime; 
    $site->reload_rate = $reloadRate; 

    $user = R::load('user', $userId); 
    $user->ownSite[] = $site; 

    $id = R::store($site); 
    R::store($user); 

    return $id; 
} 

Итак, в заключение, шляпы прочь к RedBeanPHP ОРМ FW, и я искренне надеюсь, что это помогает людям с подобной проблемой в будущем.

Смежные вопросы