SiZE
бывают конечно документации, типа как у эластика или докера, хрен чо с полпинка найдешь, но у Yii все очень прозрачно
who are you
who are you
а мы тут в одной массе
who are you
это как школу объединить с институтом и задавать всем одинаковые задания 😄
SiZE
Artur
Всем привет. Такой вопрос.
я делаю batchInsert. Могу я как то получить id'шники всех новых записей?
The Ant
можно вычислить
Павел
Павел
По крайней мере в мускуле
The Ant
метод вернет количество вставленных записей, смотришь ласт инсерт ид и вычисляешь на основе этого
The Ant
http://www.yiiframework.com/forum/index.php/topic/72746-can-batchinsert-return-all-inserted-ids/
Sergey
The Ant
ну делай запрос тогда в мускул
The Ant
взять все иды больше первого вставленного
The Ant
они и будут наверное
SiZE
Konstantin
"наверное"
Konstantin
а если кто-то еще вставил?
Konstantin
тут или другая СУБД, или вставлять по одному, или добавить колонку, вставить с уникальным идентификатором в ней, а потом запросить обратно
Konstantin
по-моему вставлять по одному - не такая и плохая идея
Сергей
Покритикуйте идею базового класса для DTO и DTO для ошибок:
http://yiiframework.ru/forum/viewtopic.php?f=34&t=44075
Dmitriy
BaseDto без интерфейса.
статические функции зачем ?
в конструктор бы
public function __construct(array $data = [], Container $container = null)
{
if(isset($container)){
$this->container = $container;
}
$this->setObject($data);
}
да бы мы управляли зависимостями.
в ероор разве не лучше прокидывать обьект ?
Dmitriy
что бы было
$user = new User();
$user->setName('aaa');
$user->setRole('Author');
$user->addGroup(new Group('Authors'));
$dto = new UserDTO($user);
Сергей
В случаях когда сущность - это AR-томдель туда и прокидывается модель
Dmitriy
ну тут еще мое имхо. я бы не делал зазовый обьект с магией
Dmitriy
Сергей
Можно я по порядку помучаю :)
"BaseDto без интерфейса. " - можно поподробнеее? Зачем тут интерфейс?
Dmitriy
Да бы мы знали ничего не изменится.
но я еще не понимаю зачем тут базовый класс
Dmitriy
для toJson ? toArray ?
Сергей
1) Чтобы использовать магию __Get. В DTO я пишу протектед свойства и всё, а геттеры через магию работают.
2) метод make для вызова конструктора. например: EmployeeDto::make($name, $role);
Dmitriy
$error = new Error();
$error->alert('name')
$dto = new ErrorDTО($error);
Вот так разве не лучше ?
Dmitriy
protected function makeErrors
сделать ошибки ?-
делать ошибки ?
Сергей
class NameDto extends BaseDto {
protected $firstName;
protected $middleName;
protected $lastName;
public function __construct($firstName, $middleName, $lastName) {
$this->firstName = $firstName;
$this->middleName= $middleName;
$this->lastName= $lastName;
Сергей
вот пример
Dmitriy
вызывать магией ?
Сергей
да, чтобы свойства не были доступны для записи
Dmitriy
если мы хотим добавить не обязательное поле ?
Сергей
то есть дто создаётся и всё, больше с ним ничего нельзя сделать
Сергей
в конструкторе поле по-умолчанию
Dmitriy
а что делать не поумолчанию с полями ?
Сергей
ой, код не весь вставился
Сергей
А как в телеграме выделить код, но без помощи @bold ?
Сергей
Выше ты делал :)
Dmitriy
`
Сергей
`class NameDto extends BaseDto {
protected $firstName;
protected $middleName;
protected $lastName;
public function __construct($firstName, $middleName, $lastName) {
$this->firstName = $firstName;
$this->middleName= $middleName;
$this->lastName= $lastName;
}
}
$name = NameDto::make('Пётр', 'Иванович', 'Сидоров');
echo $name->firstName;
echo $name->middleName;
echo $name->lastName;`
Dmitriy
статические методы такое себе =(.
SarcasmIO
``
Dmitriy
мне нравится такой подход
https://dzone.com/articles/practical-php/practical-php-patterns-data
Dmitriy
Сергей
class NameDto extends BaseDto {
protected $firstName;
protected $middleName;
protected $lastName;
protected $userName;
public function __construct($firstName, $middleName, $lastName, $userName = '') {
$this->firstName = $firstName;
$this->middleName = $middleName;
$this->lastName = $lastName;
$this->userName = $userName;
}
}
$name = NameDto::make('Пётр', 'Иванович', 'Сидоров');
echo $name->firstName;
echo $name->middleName;
echo $name->lastName;
echo $name->userName;
Сергей
Вот пример с необязательными полями
Сергей
А где там статические переменные?
Сергей
Там только функция make и className
Dmitriy
ой методы
Сергей
А чем плохо?
Сергей
Dmitriy
Сергей
хочу в классах не дублировать код :)
Сергей
В случаях, когда DTO для сущности - можно передавать сущность
Dmitriy
А чем плохо?
в тестах
https://stackoverflow.com/questions/752758/is-using-a-lot-of-static-methods-a-bad-thing
Сергей
Сергей
но в данном случае вся прелесть в функции make, но это плюшка и можно использовать new Class()
Nikita
я новичек подскажите как сделать(образно), у модели есть связь к таблице
return $this->hasMany(Properties::className(), ['id' => 'properties_id'])->viaTable('{{%catalog_objects_properties}}', ['catalog_objects_id' => 'id']);
как сделать редактирование через форму через checkbox
не могу понять
Витебск 01
Почему данная запись не работает? $this->layout('buy');
Юрий
потому что
Сергей
Наверное ошибка
Юрий
наверное полное отсутствие вводных
Konstantin
тю
Юрий
что там за метод и метод ли вообще
Konstantin
ну наверное ж потому что нет такого метода
Konstantin
$this->layout = 'buy'?
Сергей
http://stuff.cebe.cc/yii2docs-ru/guide-structure-views.html#using-layouts
Витебск 01
SiteController::layout() does not exist
Сергей
прочитай документацию
Сергей
ссылка выше
Витебск 01
Konstantin
ага