96 lines
2.3 KiB
PHP
96 lines
2.3 KiB
PHP
<?php namespace Zoomyboy\Social\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Model;
|
|
|
|
/**
|
|
* Post Model
|
|
*/
|
|
class Post extends Model
|
|
{
|
|
use \October\Rain\Database\Traits\Validation;
|
|
|
|
/**
|
|
* @var string The database table used by the model.
|
|
*/
|
|
public $table = 'zoomyboy_social_posts';
|
|
|
|
/**
|
|
* @var array Guarded fields
|
|
*/
|
|
protected $guarded = ['*'];
|
|
|
|
/**
|
|
* @var array Fillable fields
|
|
*/
|
|
protected $fillable = ['message', 'href', 'remote_id', 'created_at', 'updated_at'];
|
|
|
|
/**
|
|
* @var array Validation rules for attributes
|
|
*/
|
|
public $rules = [];
|
|
|
|
/**
|
|
* @var array Attributes to be cast to native types
|
|
*/
|
|
protected $casts = [];
|
|
|
|
/**
|
|
* @var array Attributes to be cast to JSON
|
|
*/
|
|
protected $jsonable = [];
|
|
|
|
/**
|
|
* @var array Attributes to be appended to the API representation of the model (ex. toArray())
|
|
*/
|
|
protected $appends = [];
|
|
|
|
/**
|
|
* @var array Attributes to be removed from the API representation of the model (ex. toArray())
|
|
*/
|
|
protected $hidden = [];
|
|
|
|
/**
|
|
* @var array Attributes to be cast to Argon (Carbon) instances
|
|
*/
|
|
protected $dates = [
|
|
'created_at',
|
|
'updated_at'
|
|
];
|
|
|
|
/**
|
|
* @var array Relations
|
|
*/
|
|
public $hasOne = [];
|
|
public $hasMany = [
|
|
'attachments' => [ Attachment::class, 'post_id' ]
|
|
];
|
|
public $belongsTo = [
|
|
'page' => [ Page::class, 'page_id' ]
|
|
];
|
|
public $belongsToMany = [];
|
|
public $morphTo = [];
|
|
public $morphOne = [];
|
|
public $morphMany = [];
|
|
public $attachOne = [];
|
|
public $attachMany = [];
|
|
|
|
public function beforeDelete() {
|
|
$this->attachments->each->delete();
|
|
}
|
|
|
|
// ---------------------------------- Getters ----------------------------------
|
|
// *****************************************************************************
|
|
public function getFeaturedImageAttribute(): ?string
|
|
{
|
|
return optional($this->attachments->first())->href;
|
|
}
|
|
|
|
// ---------------------------------- Scopes -----------------------------------
|
|
// *****************************************************************************
|
|
public function scopeWithIntro(Builder $q): Builder
|
|
{
|
|
return $q->selectSub('SELECT SUBSTRING(message, 1, 200)', 'intro');
|
|
}
|
|
}
|