class Movie
{
private int $id;
private string $title;
private float $price;
private string $category;
class Movie
{
const CREATE_TABLE_SQL =
<<<HERE
CREATE TABLE IF NOT EXISTS movie (
id integer PRIMARY KEY AUTO_INCREMENT,
title text,
price float,
category text
)
HERE;
... rest of class ...
$this->dropTable();
$this->createTable($sql); // pass through any SQL provided
$this->deleteAll();
Tudublin\MovieRepository;
$movieRepository = new MovieRepository();
// (1) drop then re-create table
$movieRepository->resetTable();
// (2) create objects
$movieRepository->createAndInsert('Jaws', 9.99, 'horror');
$movieRepository->createAndInsert('Jumanji', 7, 'entertainment');
// (3) test objects are there
$movies = $movieRespository->findAll();
print '<pre>';
var_dump($movies);
class MovieRepository extends DatabaseTableRepository
{
public function createAndInsert($title, $price, $category)
{
$m = new Movie();
$m->setTitle($title);
$m->setPrice($price);
$m->setCategory($category);
$this->insert($m);
}
}
Tudublin\Movie;
use Tudublin\MovieRepository;
$movieRespository = new MovieRepository();
// (1) drop then create table
$movieRespository->resetTable();
// (3) create objects
$m1 = new Movie();
$m1->setTitle('Jaws');
$m1->setPrice(9.99);
$m1->setCategory('horror');
$m2 = new Movie();
$m2->setTitle('Jumanji');
$m2->setPrice(9.99);
$m2->setCategory('entertainment');
// (3) insert objects into DB
$movieRespository->insert($m1);
$movieRespository->insert($m2);
// (4) test objects are there
$movies = $movieRespository->findAll();
print '<pre>';
var_dump($movies);
php
// file: /src/Movie.php
namespace <MyNameSpace>;
class Movie
{
// private properties with EXACTLY same names as DB table columns
private $id;
private $title;
public function getId()
{
return $this->id;
}
public function getTitle()
{
return $this->title;
}
}
php
// file: /src/MovieRepository.php
namespace <MyNameSpace>;
use Mattsmithdev\PdoCrudRepo\DatabaseTableRepository;
class MovieRepository extends DatabaseTableRepository
{
// no methods needed if you've followed defaults
// all the 'magic' is done through relfection ...
}
php
// file: /public-web/index.php or /src/SomeController->method()
$movieRepository = new MovieRepository();
// get all records from DB as an array of Dvd objects
$movies = $movieRepository->findAll();
// output each Dvd object as HTML lines in the form 'title = Jaws II'
foreach($movies as $movie){
/**
* @var $movie <MyNameSpace>\Movie
*/
print 'id = ' . $movie->getId();
print '<br>';
print 'title = ' . $movie->getTitle();
print '<br>';
}
php
$m = new Movie();
$m->setTitle('Jaws');
$m->setPrice(9.99);
etc.
php
namespace Whatever; // same as for Entity calss
use Mattsmithdev\PdoCrudRepo\DatabaseManager;
use Mattsmithdev\PdoCrudRepo\DatabaseTableRepository;
class MovieRepository extends DatabaseTableRepository
{
}
php
$movieRepository = new MovieRepository();
$movies = $movieRepository->getAll();
php
// array of Movie objects, populated from database table 'movie'
$movieRepository = new MovieRepository();
$movies = $movieRepository->findAll();
php
// delete row in database table 'movie' with id=12
$movieRepository = new MovieRepository();
$deleteSuccess = $movieRepository->delete(12);
php
// update DB record for object 'movie'
$movieRepository = new MovieRepository();
$updateSuccess = $movieRepository->update($movie);
php
// get all Movies with 'jaws' in the title
$movieRepository = new MovieRepository();
$jawsMovies = $movieRepository->searchByColumn('title', 'jaws');
php
// drop table `movie` from DB
$movieRepository = new MovieRepository();
$movieRepository->dropTable();
php
$movieRepository = new MovieRepository();
$movieRespository->resetTable();
php
namespace Whatever; // same as for Entity calss
use Mattsmithdev\PdoCrudRepo\DatabaseManager;
use Mattsmithdev\PdoCrudRepo\DatabaseTableRepository;
class ProductRepository extends DatabaseTableRepository
{
/**
* illustrate custom PDO DB method
* in this case we search for products with an id >= $minId, and whose descrption contains $searchText
*
* @param $minId
* @param $searchText
*
* @return array
*/
public function getAllAboveMinIdContainsString($minId, $searchText)
{
$db = new DatabaseManager();
$connection = $db->getDbh();
// wrap wildcard '%' around the search text for the SQL query
$searchText = '%' . $searchText . '%';
$sql = 'SELECT * FROM product WHERE (description LIKE :searchText) AND (id > :minId)';
$statement = $connection->prepare($sql);
$statement->bindParam(':minId', $minId, \PDO::PARAM_INT);
$statement->bindParam(':searchText', $searchText, \PDO::PARAM_STR);
$statement->setFetchMode(\PDO::FETCH_CLASS, $this->getClassNameForDbRecords());
$statement->execute();
$products = $statement->fetchAll();
return $products;
}
php
// get products from DB as array of Product objects - id > minId, description containing $searchText
$minId = 2;
$searchText = 'er';
$productRepository = new ProductRepository();
$products = $productRepository->getAllAboveMinIdContainsString($minId, $searchText);
// outputs something like:
// [5] pliers
// [7] hammer
foreach ($products as $product){
print '<p>';
print 'id [' . $product->getId() . '] ';
print $product->getDescription();
}
// [1] nut -- not listed due to search criteria
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.