У меня есть вопрос о классах ' моделирование, обучение ', есть два простых правила, которые не вписываются в мою голову, и что такое обучение должно обеспечить,
в моей модели, будь то 'CustomersModel
, VehicleModel
' 'я' имею 'иметь доступ к методам записи запросов (SQLBuilder)
, но также иметь доступ к базе данных, которая не будет устанавливать маппер, так как маппер работает на скамейке, а не на банке над маппером, немного усложненный моей ситуацией.
Представьте себе следующее:
<?php
// database access, mapping
abstract class Mapper { }
abstract class Model { }
interface Connection { } // to recognize it's a database access
class MySQL implements Connection { }
class PgSQL implements Connection { }
// SQL Helper, some methods to write a update, insert, delete, select query
class SQLBuilder { }
// my custom models
class Customers extends Model { }
визуализируя эту структуру, «Клиенты», уже имеет доступ к мапперу, и в этом случае у меня будет свойство «$_table
» (среди прочего) в таблице «Клиенты», чтобы признать, что эта модель работает, но .. У меня нет доступа к средству записи запросов, а не к базе данных, для этого я подумал о методе 'main()
', где setaria подключается к базе данных, используя 'setDatabaseConnection ( Connection $connection )
', но код будет часто повторяется, просто представьте, что для N моделей все используют -> setDatabaseConnectiom, и все приложение использует только одну базу данных? ..
Мой вопрос в основном таков: предоставить доступ к базе данных без использования метода сеттера в модели (Customers, Vehicle)
и сразу же создавать запросы.
Я не хочу использовать это ..
<?php
// my models
class Customers extends Model {
// method of mapper does'nt implement
public function getByCity ( $city ) {
$query = $this->select()->from($this->_table)->where('city = ?', $city);
$resultSet = $this->getConnection()->query( $query );
if ( $resultSet->rowCount() > 1 ) {
return $resultSet->fetchAll();
} else return $resultSet->fetch();
}
}
так как я могу использовать save ()
, delete ()
, update ()
маппер.
в этом случае метод getConnection ()
должен получить соединение по умолчанию и вернуть класс.