Size: a a a

2020 December 05

S

SarcasmIO in phpGeeks
это в случае создания нового, в случае когда ты пытаешься достать существующий, условный Post::find(1) / etc это уже другое дело
источник

A

Anton in phpGeeks
В данном случае речь про select
источник

S

SarcasmIO in phpGeeks
представь визуально свою сущность и как она инициализируется из параметров конструктора, вот приблизительное такое должно вернутся с базы иначе придется использовать гидраторы/кастомные мапперы
источник

S

SarcasmIO in phpGeeks
крч, представь что у тебя твоя сущность может инициализироваться из некого набора данных
можешь наворотить статических конструкторов что бы было проще аля Post::empty()
->setTitle(asd)
etc
но инициализация так или иначе объекта будет после ретрива данных с репоса и оч примитивно вызова Post::fromSomething($data) либо какого-нить вызова
array_map(fn(array $data) => new Post($data), $dbResults) // PostCollection
источник

A

Anton in phpGeeks
Ага, то есть не дергать базу внутри конструктора, а передавать уже вытащеный из базы набор даных в конструктор.
источник

A

Anton in phpGeeks
Верно понимаю?
источник

S

SarcasmIO in phpGeeks
ну по крайней мере так было бы канонично
источник

S

SarcasmIO in phpGeeks
Anton
Ага, то есть не дергать базу внутри конструктора, а передавать уже вытащеный из базы набор даных в конструктор.
попробуй разделить то, что у тебя там есть на репозитории и модельки
источник

S

SarcasmIO in phpGeeks
First Last
И я только что узнал...

$users = [];
for($i = 1; $i < 15; $i++) {
   $users[] = (object) ['id' => $i];
}

echo 'delete from users where id in (' . implode(',', array_column($users, 'id')) . ')';
Валидный код
в целом и не оч зазорно эту логику делать в репосе
источник

A

Anton in phpGeeks
А запросы в базу делать в PostCollection? А в PostCollection какой-нибудь условный метод getPostFromId ?
источник

S

SarcasmIO in phpGeeks
запросы и все что связанно с базой в репосе, это не совсем каноничный репос будет а row data gateway / table data gateway
источник

S

SarcasmIO in phpGeeks
у него будет условный $connection к базе, юзая который ты будешь выбирать данные и делать логику с ними
источник

EK

Evgeniy Kuvshinov in phpGeeks
мечты от отказе от AR :)
источник

S

SarcasmIO in phpGeeks
так же делаешь все преобразования голых данных(массивов) внутри репоса в эти твои модельки
источник

S

SarcasmIO in phpGeeks
PostRepository::find/findOne/delete/etc
судя по тому какие вопросы ты задаешь можешь туда и save() нахуярить, потом через пару лет прочитаешь почему это не оч круто)
источник

S

SarcasmIO in phpGeeks
но еще раз, репос делает все что связанно с ретривом/удалением/обновлением данных и на границах возвращает твою модельку

PostRepository::find(1) // Post instance
PostRepository::find([1,2,3,4,5]) // Collection<Post>
PostRepository::delete($post) where $post is Post instance ну и так далее
источник

A

Anton in phpGeeks
Да, я понял. Благодарю за консультацию )
источник

EK

Evgeniy Kuvshinov in phpGeeks
SarcasmIO
но еще раз, репос делает все что связанно с ретривом/удалением/обновлением данных и на границах возвращает твою модельку

PostRepository::find(1) // Post instance
PostRepository::find([1,2,3,4,5]) // Collection<Post>
PostRepository::delete($post) where $post is Post instance ну и так далее
на статических методах збс )
источник

EK

Evgeniy Kuvshinov in phpGeeks
иньектить маппер
источник

EK

Evgeniy Kuvshinov in phpGeeks
вообще старая презентация очень хорошо вправляет мозги
источник