Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Model\Blog;
- use Dero\Core\Retval;
- use Dero\Data\BaseModel;
- use Dero\Data\DataException;
- use Dero\Data\ParameterCollection;
- /**
- * Blog Model
- * @author Ryan Pallas
- * @package Derokorian.com
- * @namespace App\Model
- * @depends App\Model\UserModel
- * @since 2015-02-08
- */
- class Model extends BaseModel
- {
- const TABLE_NAME = 'post';
- const COLUMNS = [
- 'post_id' => [
- COL_TYPE => COL_TYPE_INTEGER,
- KEY_TYPE => KEY_TYPE_PRIMARY,
- DB_REQUIRED => false,
- DB_EXTRA => [
- DB_AUTO_INCREMENT
- ]
- ],
- 'user_id' => [
- COL_TYPE => COL_TYPE_INTEGER,
- KEY_TYPE => KEY_TYPE_FOREIGN,
- FOREIGN_TABLE => 'user',
- FOREIGN_COLUMN => 'user_id',
- DB_REQUIRED => true
- ],
- 'parent_id' => [
- COL_TYPE => COL_TYPE_INTEGER,
- KEY_TYPE => KEY_TYPE_FOREIGN,
- FOREIGN_TABLE => 'post',
- FOREIGN_COLUMN => 'post_id',
- DB_REQUIRED => false,
- DB_EXTRA => [
- DB_NULLABLE
- ]
- ],
- 'title' => [
- COL_TYPE => COL_TYPE_STRING,
- KEY_TYPE => KEY_TYPE_UNIQUE,
- COL_LENGTH => 255,
- DB_REQUIRED => true,
- DB_VALIDATION => '/^[a-z0-9_ -.!?]{3,}$/i'
- ],
- 'body' => [
- COL_TYPE => COL_TYPE_TEXT,
- DB_REQUIRED => true
- ],
- 'active' => [
- COL_TYPE => COL_TYPE_BOOLEAN,
- DB_REQUIRED => false
- ],
- 'featured' => [
- COL_TYPE => COL_TYPE_BOOLEAN,
- DB_REQUIRED => false
- ],
- 'published' => [
- COL_TYPE => COL_TYPE_DATETIME,
- DB_REQUIRED => false,
- DB_EXTRA => [
- DB_NULLABLE
- ]
- ],
- 'created' => [
- COL_TYPE => COL_TYPE_DATETIME,
- DB_REQUIRED => false
- ],
- 'modified' => [
- COL_TYPE => COL_TYPE_DATETIME,
- DB_REQUIRED => false
- ]
- ];
- public function getPosts(Array $aOpts) : Retval
- {
- $oRet = new Retval();
- $oParams = new ParameterCollection();
- $strSql = 'SELECT p.post_id, title, p.body, p.active, p.featured, p.created, p.modified, u.username
- FROM `post` p
- JOIN `user` u USING (user_id) ';
- $strSql .= $this->GenerateCriteria($oParams, $aOpts, 'p.');
- try {
- $oRet->Set(
- array_map(function ($oPost) {
- $oPost->post_id = (int)$oPost->post_id;
- $oPost->active = (bool)$oPost->active;
- $oPost->featured = (bool)$oPost->featured;
- return $oPost;
- }, $this->DB
- ->Prepare($strSql)
- ->BindParams($oParams)
- ->Execute()
- ->GetAll(Post::class)
- )
- );
- } catch (DataException $e) {
- $oRet->AddError('Unable to query database', $e);
- }
- return $oRet;
- }
- }
Add Comment
Please, Sign In to add comment