abstract class DatabaseModel {
....
public function select()
{
$this->query_string = htmlspecialchars("SELECT * FROM ".$this->tableName);
}
public function find($id)
{
return $this->where('id',$id)->get();
}
// Следует еще использовать магию для этого метода, чтобы была возможность вызывать его статически
// но это тоже опустим
public function where($column, $value, $condition = "=")
{
$this->query_string .= htmlspecialchars($this->select() . "WHERE " . $this->tableName.".".$column .
$condition . $value);
}
public function update(...) {...}
public function delete(...) {...}
...
public function get()
{
// сейчас возвращаем массив, но нужно в реальном решении возвращать эту же модель,
// но где уже все свойства заполнены данными из БД, опущу этот процесс для простоты.
// Если действительно хотите реализовать это - используйте для удобство магию (сеттеры),
// чтобы доступ к свойствам был удобен и они были динамическими
return PDO::exec($this->query_string)->fetchAll();
}
....
}
class Users extends DatabaseModel {
...
public function getById($id)
{
// Этот метод нам вообще не нужен теперь, пользователя можно будет просто получить.
// При реализации нормальной get() - получим модель Users конкретного пользователя
}
public function rating()
{
// Возвращает модель рейтинга данного пользователя
return Rating::where('user_id', $this->id)->get();
}
...
}
// При нашей самопальной реализации это будет жрать 3 запроса: 1)поиск user 2) поиск rating 3) update
User::find(123)->rating()->update(['rating'=>200]);
//также и в обратную сторону, но это будет жрать 1 запрос 1)поиск rating и update
Rating::where('user_id',123)->update(['rating'=>200]);
php artisan config:clear
php artisan migrate --env=testing
?
Не знаю, пишу на Django, параллельно и с PHP работаю. Разницы в сложности и "массивности" крайне мало, и никакой питон не массивный язык, массивна его инфраструктура с огромным кол-вом сишных скомпилированных библиотек, но такого и в PHP достаточно. Вот за С++ мне сложнее судить, но в моей жизни было время, когда я на Си писал под микроконтроллеры (не в компании, небольшой фриланс был), и могу сказать, что в более низкоуровневом сегменте помимо языка и технологий нужно очень много знать и разбираться в теории, как ПК работает, что такое АЛУ, триггеры и т.д. Но это дело времени и мозгов, поэтому и специалистов там меньше, но если не расслабляться то на нижнем уровне с нормальной головой можно выйти в топ намного быстрее, чем в более популярном сегменте.
Ага, вы бы видели какой там контингент, это не джуниоры, это люди, которые вообще не знают куда попали и что происходит. Найдите запись почти любой трансляции и гляньте в комментарии - сразу всё станет понятно, смешно, но и немного грустно :) В кратце - 90% людей, берущих такие курсы - кроме этих курсов ничего не делают и думают, что сам факт прохождения сделает их программистами.
Так что тут два конца - чем сложнее теоретическая подоплека у языка - тем проще там стать спецом, но усидчивости нужно в разы больше, а чем легче теоретическая подоплека - тем проще там стать спецом, но нужно учить не только язык и технологии. Как-то так.