-
Notifications
You must be signed in to change notification settings - Fork 0
/
TableModel.php
77 lines (66 loc) · 1.74 KB
/
TableModel.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
namespace Niiknow\Laratt\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str;
use Niiknow\Laratt\Traits\AuditableTrait;
use Niiknow\Laratt\Traits\SchedulableTrait;
use Niiknow\Laratt\Traits\TableModelTrait;
class TableModel extends Model
{
use AuditableTrait,
SchedulableTrait,
TableModelTrait;
/**
* @var array
*/
protected $casts = [
'private' => 'array',
'public' => 'array',
];
/**
* The attributes that should be casted by Carbon.
*
* @var array
*/
protected $dates = [
'created_at',
'updated_at',
'started_at',
'ended_at',
];
/**
* @var array
*/
protected $fillable = [
'uid', 'private', 'public', 'started_at', 'ended_at',
];
/**
* @param $tableNew
* @return void
*/
public function createTable(
$tableNew
) {
Schema::create($tableNew, function (Blueprint $table) {
$table->increments('id');
// allow to uniquely identify this model
$table->string('uid', 50)->unique();
$table->timestamp('started_at')->nullable()->index();
$table->timestamp('ended_at')->nullable()->index();
$table->longText('privatedata')->nullable();
$table->longText('publicdata')->nullable();
$table->timestamps();
});
}
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
if ($model->uid === null || empty($model->uid)) {
$model->uid = (string) Str::uuid();
}
});
}
}