12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- namespace Illuminate\Tests\Integration\Database\EloquentTouchParentWithGlobalScopeTest;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Schema\Blueprint;
- use Illuminate\Support\Facades\Schema;
- use Illuminate\Support\Str;
- use Illuminate\Tests\Integration\Database\DatabaseTestCase;
- class EloquentTouchParentWithGlobalScopeTest extends DatabaseTestCase
- {
- protected function defineDatabaseMigrationsAfterDatabaseRefreshed()
- {
- Schema::create('posts', function (Blueprint $table) {
- $table->increments('id');
- $table->string('title');
- $table->timestamps();
- });
- Schema::create('comments', function (Blueprint $table) {
- $table->increments('id');
- $table->integer('post_id');
- $table->string('title');
- $table->timestamps();
- });
- }
- public function testBasicCreateAndRetrieve()
- {
- $post = Post::create(['title' => Str::random(), 'updated_at' => '2016-10-10 10:10:10']);
- $this->assertSame('2016-10-10', $post->fresh()->updated_at->toDateString());
- $post->comments()->create(['title' => Str::random()]);
- $this->assertNotSame('2016-10-10', $post->fresh()->updated_at->toDateString());
- }
- }
- class Post extends Model
- {
- public $table = 'posts';
- public $timestamps = true;
- protected $guarded = [];
- public function comments()
- {
- return $this->hasMany(Comment::class, 'post_id');
- }
- public static function boot()
- {
- parent::boot();
- static::addGlobalScope('age', function ($builder) {
- $builder->join('comments', 'comments.post_id', '=', 'posts.id');
- });
- }
- }
- class Comment extends Model
- {
- public $table = 'comments';
- public $timestamps = true;
- protected $guarded = [];
- protected $touches = ['post'];
- public function post()
- {
- return $this->belongsTo(Post::class, 'post_id');
- }
- }
|