Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: Zend Framework
Войти
Регистрация
Восстановить пароль
 
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
1

Получить код будущей записи в БД

30.04.2018, 19:11. Просмотров 161. Ответов 7
Метки нет (Все метки)

Как можно получить под каким id будет создана будущая запись? Т.е. нужно узнать атвоинкрементый код не после сохранения, а перед.
PHP
1
2
3
4
$partner = new App_Model_Partner();
$partner->name = 'Dima';
$partner->img = будущий_id . '.jpg';
$partner->save();
Нашел такую штуку:
PHP
1
$this->getDbTable->newId('partners','id');
Но выдает
Fatal error: Call to a member function newId() on null in
Добавлено через 51 минуту
Пока сделал такие костыли:
PHP
1
2
3
4
5
6
$partner = new App_Model_Partner();
$partner->name = 'Dima';
$partner->img = '';
$partner->save();
$partner->img = $this->db->lastInsertId() . '.jpg';
$partner->save();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2018, 19:11
Ответы с готовыми решениями:

Определение будущей стоимости.
Определение будущей стоимости Рассчитайте какая сумма окажется на счете, если...

Модель данных будущей БД
Здравствуйте. Сомневаюсь в своей составленной схеме модель данных будущей БД. ...

Задача на расчёт будущей прибыли
Здравствуйте. Помогите пожалуйста разобраться с задачкой - вроде решил, но...

Иерархия классов для будущей игры
Здравствуйте. До этого писал простенькие игрушки вроде карточных игр, но...

Все ли совместимо в моей будущей железяке?
И так ситуация такова я захотел собрать ПК в размере 46 - 50 кусков. Просто...

7
Borsche
166 / 95 / 41
Регистрация: 03.07.2016
Сообщений: 415
30.04.2018, 23:44 2
Цитата Сообщение от Toxa33rus Посмотреть сообщение
атвоинкрементый код не после сохранения, а перед
Id даёт БД а не ORM поэтому не получиться до сохранения. Если вам не принципиально нужно устанавливать имя картинки равным id сущности, просто генерируйте его и всё. А если же принципиально то до сохранения сущности сами давайте ей id , можно воспользоваться uuid.
1
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
30.04.2018, 23:49  [ТС] 3
Цитата Сообщение от Borsche Посмотреть сообщение
Если вам не принципиально нужно устанавливать имя картинки равным id сущности, просто генерируйте его и всё. А если же принципиально то до сохранения сущности сами давайте ей id , можно воспользоваться uuid.
Да, хочу чтоб id был такой же как картинка чтоб не было путаницы.
0
Borsche
166 / 95 / 41
Регистрация: 03.07.2016
Сообщений: 415
01.05.2018, 10:26 4
Не совсем понятно зачем вам это, но раз уж так то или сами давайте id или сохраняйте сущность берите id и обновляйте(в принципе вы так и сделали). И кстати вы что картинку в базе храните?
0
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
01.05.2018, 11:39  [ТС] 5
Цитата Сообщение от Borsche Посмотреть сообщение
Не совсем понятно зачем вам это
С сайтом работают два человека: простой пользователь через простенькую админку, и я через phpmyadmin+ftp.
Пользователь заносит в базу поштучно что ему надо, а я сразу пачкой через sql запрос. Я заранее знаю какой будет следующий id и все картинки переименовываю как надо, а дальше файлы закидываю и в базу заливаю всю инфу.
Если отказаться от соответствия имени фотки и id, то для меня это будет уже не удобно.
В базе хранится только имя файла, а сами файлы конечно же в отдельной папке. Через админку могут выбрать Без-имени-1.jpg, а картинка переименуется как надо. Вот и надо знать во что ее переименовать.
Как-то так.
0
arava
312 / 115 / 62
Регистрация: 30.06.2014
Сообщений: 632
05.06.2018, 12:02 6
Цитата Сообщение от Toxa33rus Посмотреть сообщение
получить под каким id будет создана будущая запись
простите, а что мешает получить последнюю запись с таблицы + 1 ?
0
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
05.06.2018, 12:53  [ТС] 7
Цитата Сообщение от arava Посмотреть сообщение
а что мешает получить последнюю запись с таблицы + 1 ?
Опасно.
При удалении последней записи (с максимальным id), инкремент не уменьшается.
Получается я получу максимальный код, например, 6, а новая запись будет с кодом 8.
0
arava
312 / 115 / 62
Регистрация: 30.06.2014
Сообщений: 632
05.06.2018, 13:57 8
Toxa33rus, вижу еще такой вариант :
хранить доп таблицу для нумерации картинок. Делать в неё insert перед сохранением картинки, получать lastinsertid() и выполнять +1 и сохранять картинку с уже +1.
При удалении картинки, таблицу с номерами картинок не трогаем, при следующем insert автоинкримент будет расти...

0
05.06.2018, 13:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2018, 13:57

Можно ли узнать размер будущей выборки, не производя её?
С помощью оператора SELECT и условий WHERE можно получить из базы нужную...

Как получить исходный код *.exe или отредактировать его исполняемый код?
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно...

Использование типа decimal для вычисления будущей стоимости капиталовложений
Доброго времени суток, занимаюсь пару дней по книге "полный справочник по C#"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru