7
7
use Illuminate \Database \SQLiteConnection ;
8
8
use Illuminate \Support \Facades \DB ;
9
9
use MongoDB \Laravel \Tests \Models \Book ;
10
+ use MongoDB \Laravel \Tests \Models \Photo ;
10
11
use MongoDB \Laravel \Tests \Models \Role ;
11
12
use MongoDB \Laravel \Tests \Models \SqlBook ;
13
+ use MongoDB \Laravel \Tests \Models \SqlPhoto ;
12
14
use MongoDB \Laravel \Tests \Models \SqlRole ;
13
15
use MongoDB \Laravel \Tests \Models \SqlUser ;
14
16
use MongoDB \Laravel \Tests \Models \User ;
@@ -29,13 +31,18 @@ public function setUp(): void
29
31
SqlUser::executeSchema ();
30
32
SqlBook::executeSchema ();
31
33
SqlRole::executeSchema ();
34
+ SqlPhoto::executeSchema ();
32
35
}
33
36
34
37
public function tearDown (): void
35
38
{
36
39
SqlUser::truncate ();
37
40
SqlBook::truncate ();
38
41
SqlRole::truncate ();
42
+ SqlPhoto::truncate ();
43
+ Photo::truncate ();
44
+ Book::truncate ();
45
+ User::truncate ();
39
46
}
40
47
41
48
public function testSqlRelations ()
@@ -210,4 +217,63 @@ public function testHybridWith()
210
217
$ this ->assertEquals ($ user ->id , $ user ->books ->count ());
211
218
});
212
219
}
220
+
221
+ public function testHybridMorphToMongoDB (): void
222
+ {
223
+ $ user = SqlUser::create (['name ' => 'John Doe ' ]);
224
+
225
+ $ photo = Photo::create (['url ' => 'http://graph.facebook.com/john.doe/picture ' ]);
226
+ $ photo = $ user ->photos ()->save ($ photo );
227
+
228
+ $ this ->assertEquals (1 , $ user ->photos ->count ());
229
+ $ this ->assertEquals ($ photo ->id , $ user ->photos ->first ()->id );
230
+
231
+ $ user = SqlUser::find ($ user ->id );
232
+ $ this ->assertEquals (1 , $ user ->photos ->count ());
233
+ $ this ->assertEquals ($ photo ->id , $ user ->photos ->first ()->id );
234
+
235
+ $ book = SqlBook::create (['title ' => 'Game of Thrones ' ]);
236
+ $ photo = Photo::create (['url ' => 'http://graph.facebook.com/gameofthrones/picture ' ]);
237
+ $ book ->photo ()->save ($ photo );
238
+
239
+ $ this ->assertNotNull ($ book ->photo );
240
+ $ this ->assertEquals ($ photo ->id , $ book ->photo ->id );
241
+
242
+ $ book = SqlBook::where ('title ' , $ book ->title )->get ()->first ();
243
+ $ this ->assertNotNull ($ book ->photo );
244
+ $ this ->assertEquals ($ photo ->id , $ book ->photo ->id );
245
+
246
+ $ photo = Photo::first ();
247
+ $ this ->assertEquals ($ photo ->hasImage ->name , $ user ->name );
248
+ }
249
+
250
+ public function testHybridMorphToSql (): void
251
+ {
252
+ $ user = User::create (['name ' => 'John Doe ' ]);
253
+
254
+ $ photo = SqlPhoto::create (['url ' => 'http://graph.facebook.com/john.doe/picture ' ]);
255
+ $ photo ->save ();
256
+ $ photo = $ user ->photos ()->save ($ photo );
257
+
258
+ $ this ->assertEquals (1 , $ user ->photos ->count ());
259
+ $ this ->assertEquals ($ photo ->id , $ user ->photos ->first ()->id );
260
+
261
+ $ user = User::find ($ user ->id );
262
+ $ this ->assertEquals (1 , $ user ->photos ->count ());
263
+ $ this ->assertEquals ($ photo ->id , $ user ->photos ->first ()->id );
264
+
265
+ $ book = Book::create (['title ' => 'Game of Thrones ' ]);
266
+ $ photo = SqlPhoto::create (['url ' => 'http://graph.facebook.com/gameofthrones/picture ' ]);
267
+ $ book ->photo ()->save ($ photo );
268
+
269
+ $ this ->assertNotNull ($ book ->photo );
270
+ $ this ->assertEquals ($ photo ->id , $ book ->photo ->id );
271
+
272
+ $ book = Book::where ('title ' , $ book ->title )->get ()->first ();
273
+ $ this ->assertNotNull ($ book ->photo );
274
+ $ this ->assertEquals ($ photo ->id , $ book ->photo ->id );
275
+
276
+ $ photo = SqlPhoto::first ();
277
+ $ this ->assertEquals ($ photo ->hasImage ->name , $ user ->name );
278
+ }
213
279
}
0 commit comments