Polymorphicの例は、staffの写真と商品の写真をphotosというテーブルで管理し、staffと商品を連携させることです。
$ php artisan make:model Staff -m
public function up()
    {
        Schema::create('staff', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }
$ php artisan make:model Product -m
Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
$ php artisan make:model Photo -m
Schema::create('photos', function (Blueprint $table) {
            $table->increments('id');
            $table->string('path');
            $table->integer('imageable_id');
            $table->string('imageable_type');
            $table->timestamps();
        });
$ php artisan migrate
Photo.php
public function imageable(){
    	return $this->morphTo();
    }
Staff.php, Product.php
public function photos(){
    	return $this->morphMany('App\Photo', 'imageable');
    }
staffsとproductsのテーブルにレコード挿入
mysql> insert into staff (name) values (‘peter’);
Query OK, 1 row affected (0.06 sec)
mysql> insert into staff (name) values (‘john’);
Query OK, 1 row affected (0.00 sec)
mysql> insert into product (name) values (‘laravel’);
ERROR 1146 (42S02): Table ‘polymorphic.product’ doesn’t exist
mysql> insert into products (name) values (‘laravel’);
Query OK, 1 row affected (0.01 sec)
mysql> insert into products (name) values (‘cake’);
Query OK, 1 row affected (0.00 sec)
Route::get('/create', function(){
	$staff = Staff::find(1);
	$staff->photos()->create(['path'=>'example.jpg']);
});
read
Route::get('/read', function(){
	$staff = Staff::findOrFail(1);
	foreach($staff->photos as $photo){
		return $photo->path;
	}
});
update
Route::get('/update', function(){
	$staff = Staff::findOrFail(1);
	$photo = $staff->photos(1)->whereId(2)->first();
	$photo->path = "update exampl.jpg";
	$photo->save();
});
delete
Route::get('/delete', function(){
	$staff = Staff::findOrFail(1);
	$staff->photos()->delete();
});
connect
Route::get('/assign', function(){
	$staff = Staff::findOrFail(1);
	$photo = Pohoto::findOrFail(3);
	$staff->photos()->save($photo);
});