Browse Source

Add project comments relation

Add Comment model
Add commets table and factory
Add Project model morph map
pull/15/head
Nafies Luthfi 7 years ago
parent
commit
5d84642d5d
  1. 16
      app/Entities/Projects/Comment.php
  2. 6
      app/Entities/Projects/Project.php
  3. 6
      app/Providers/AppServiceProvider.php
  4. 20
      database/factories/CommentFactory.php
  5. 35
      database/migrations/2018_08_04_110400_create_comments_table.php

16
app/Entities/Projects/Comment.php

@ -0,0 +1,16 @@
<?php
namespace App\Entities\Projects;
use App\Entities\Users\User;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
protected $fillable = ['body', 'creator_id'];
public function creator()
{
return $this->belongsTo(User::class);
}
}

6
app/Entities/Projects/Project.php

@ -4,6 +4,7 @@ namespace App\Entities\Projects;
use App\Entities\Invoices\Invoice;
use App\Entities\Payments\Payment;
use App\Entities\Projects\Comment;
use App\Entities\Partners\Customer;
use Illuminate\Database\Eloquent\Model;
use Laracasts\Presenter\PresentableTrait;
@ -67,6 +68,11 @@ class Project extends Model
return $this->hasMany(Payment::class)->orderBy('date', 'desc');
}
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
public function customer()
{
return $this->belongsTo(Customer::class);

6
app/Providers/AppServiceProvider.php

@ -3,6 +3,7 @@
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Eloquent\Relations\Relation;
class AppServiceProvider extends ServiceProvider
{
@ -14,9 +15,14 @@ class AppServiceProvider extends ServiceProvider
public function boot()
{
require_once app_path().'/helpers.php';
\Validator::extend('file_extension', function ($attribute, $value, $parameters, $validator) {
return in_array($value->getClientOriginalExtension(), $parameters);
});
Relation::morphMap([
'projects' => 'App\Entities\Projects\Project',
]);
}
/**

20
database/factories/CommentFactory.php

@ -0,0 +1,20 @@
<?php
use App\Entities\Users\User;
use Faker\Generator as Faker;
use App\Entities\Projects\Comment;
use App\Entities\Projects\Project;
$factory->define(Comment::class, function (Faker $faker) {
return [
'commentable_type' => 'projects',
'commentable_id' => function () {
return factory(Project::class)->create()->id;
},
'body' => $faker->sentence,
'creator_id' => function () {
return factory(User::class)->create()->id;
},
];
});

35
database/migrations/2018_08_04_110400_create_comments_table.php

@ -0,0 +1,35 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCommentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->string('commentable_type');
$table->unsignedInteger('commentable_id');
$table->string('body');
$table->unsignedInteger('creator_id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('comments');
}
}
Loading…
Cancel
Save