Skip to content

Commit 0b78ee6

Browse files
committed
Ditch old model in favor of HybridRelations trait, move Model to the correct namespace
1 parent ca8c74c commit 0b78ee6

File tree

15 files changed

+42
-48
lines changed

15 files changed

+42
-48
lines changed

README.md

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@ Eloquent
106106
This package includes a MongoDB enabled Eloquent class that you can use to define models for corresponding collections.
107107

108108
```php
109-
use Jenssegers\Mongodb\Model as Eloquent;
109+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
110110

111111
class User extends Eloquent {}
112112
```
113113

114114
Note that we did not tell Eloquent which collection to use for the `User` model. Just like the original Eloquent, the lower-case, plural name of the class will be used as the table name unless another name is explicitly specified. You may specify a custom collection (alias for table) by defining a `collection` property on your model:
115115

116116
```php
117-
use Jenssegers\Mongodb\Model as Eloquent;
117+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
118118

119119
class User extends Eloquent {
120120

@@ -126,7 +126,7 @@ class User extends Eloquent {
126126
**NOTE:** Eloquent will also assume that each collection has a primary key column named id. You may define a `primaryKey` property to override this convention. Likewise, you may define a `connection` property to override the name of the database connection that should be used when utilizing the model.
127127

128128
```php
129-
use Jenssegers\Mongodb\Model as Eloquent;
129+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
130130

131131
class MyModel extends Eloquent {
132132

@@ -142,7 +142,7 @@ Everything else works just like the original Eloquent model. Read more about the
142142
You may also register an alias for the MongoDB model by adding the following to the alias array in `app/config/app.php`:
143143

144144
```php
145-
'Moloquent' => 'Jenssegers\Mongodb\Model',
145+
'Moloquent' => 'Jenssegers\Mongodb\Eloquent\Model',
146146
```
147147

148148
This will allow you to use the registered alias like:
@@ -232,10 +232,10 @@ MongoDB Support => enabled
232232

233233
#### Argument 2 passed to Illuminate\Database\Query\Builder::__construct() must be an instance of Illuminate\Database\Query\Grammars\Grammar, null given
234234

235-
To solve this, you will need to check two things. First check if your model is extending the correct class; this class should be `Jenssegers\Mongodb\Model`. Secondly, check if your model is using a MongoDB connection. If you did not change the default database connection in your database configuration file, you need to specify the MongoDB enabled connection. This is what your class should look like if you did not set up an alias and change the default database connection:
235+
To solve this, you will need to check two things. First check if your model is extending the correct class; this class should be `Jenssegers\Mongodb\Eloquent\Model`. Secondly, check if your model is using a MongoDB connection. If you did not change the default database connection in your database configuration file, you need to specify the MongoDB enabled connection. This is what your class should look like if you did not set up an alias and change the default database connection:
236236

237237
```php
238-
use Jenssegers\Mongodb\Model as Eloquent;
238+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
239239

240240
class User extends Eloquent {
241241

@@ -530,7 +530,7 @@ Eloquent allows you to work with Carbon/DateTime objects instead of MongoDate ob
530530
Example:
531531

532532
```php
533-
use Jenssegers\Mongodb\Model as Eloquent;
533+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
534534

535535
class User extends Eloquent {
536536

@@ -557,7 +557,7 @@ Supported relations are:
557557
Example:
558558

559559
```php
560-
use Jenssegers\Mongodb\Model as Eloquent;
560+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
561561

562562
class User extends Eloquent {
563563

@@ -572,7 +572,7 @@ class User extends Eloquent {
572572
And the inverse relation:
573573

574574
```php
575-
use Jenssegers\Mongodb\Model as Eloquent;
575+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
576576

577577
class Item extends Eloquent {
578578

@@ -587,7 +587,7 @@ class Item extends Eloquent {
587587
The belongsToMany relation will not use a pivot "table", but will push id's to a __related_ids__ attribute instead. This makes the second parameter for the belongsToMany method useless. If you want to define custom keys for your relation, set it to `null`:
588588

589589
```php
590-
use Jenssegers\Mongodb\Model as Eloquent;
590+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
591591

592592
class User extends Eloquent {
593593

@@ -607,7 +607,7 @@ Other relations are not yet supported, but may be added in the future. Read more
607607
If you want to embed models, rather than referencing them, you can use the `embedsMany` relation. This relation is similar to the `hasMany` relation, but embeds the models inside the parent object.
608608

609609
```php
610-
use Jenssegers\Mongodb\Model as Eloquent;
610+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
611611

612612
class User extends Eloquent {
613613

@@ -702,7 +702,7 @@ $books = $user->books()->where('rating', '>', 5)->orderBy('title')->get();
702702
The embedsOne relation is similar to the EmbedsMany relation, but only embeds a single model.
703703

704704
```php
705-
use Jenssegers\Mongodb\Model as Eloquent;
705+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
706706

707707
class Book extends Eloquent {
708708

@@ -750,15 +750,17 @@ $book->author()->save($newAuthor);
750750

751751
### MySQL Relations
752752

753-
If you're using a hybrid MongoDB and SQL setup, you're in luck! The model will automatically return a MongoDB- or SQL-relation based on the type of the related model. Of course, if you want this functionality to work both ways, your SQL-models will need to extend `Jenssegers\Eloquent\Model`. Note that this functionality only works for hasOne, hasMany and belongsTo relations.
753+
If you're using a hybrid MongoDB and SQL setup, you're in luck! The model will automatically return a MongoDB- or SQL-relation based on the type of the related model. Of course, if you want this functionality to work both ways, your SQL-models will need use the `Jenssegers\Mongodb\Eloquent\HybridRelations` trait. Note that this functionality only works for hasOne, hasMany and belongsTo relations.
754754

755755
Example SQL-based User model:
756756

757757
```php
758-
use Jenssegers\Eloquent\Model as Eloquent;
758+
use Jenssegers\Mongodb\Eloquent\HybridRelations;
759759

760760
class User extends Eloquent {
761761

762+
use HybridRelations;
763+
762764
protected $connection = 'mysql';
763765

764766
public function messages()
@@ -772,7 +774,7 @@ class User extends Eloquent {
772774
And the Mongodb-based Message model:
773775

774776
```php
775-
use Jenssegers\Mongodb\Model as Eloquent;
777+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
776778

777779
class Message extends Eloquent {
778780

src/Jenssegers/Eloquent/Model.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/Jenssegers/Mongodb/Eloquent/HybridRelations.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use Illuminate\Database\Eloquent\Relations\MorphMany;
44
use Illuminate\Database\Eloquent\Relations\MorphOne;
55
use Illuminate\Support\Str;
6-
use Jenssegers\Mongodb\Model;
6+
use Jenssegers\Mongodb\Eloquent\Model;
77
use Jenssegers\Mongodb\Relations\BelongsTo;
88
use Jenssegers\Mongodb\Relations\BelongsToMany;
99
use Jenssegers\Mongodb\Relations\HasMany;
@@ -23,7 +23,7 @@ trait HybridRelations {
2323
public function hasOne($related, $foreignKey = null, $localKey = null)
2424
{
2525
// Check if it is a relation with an original model.
26-
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model'))
26+
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Eloquent\Model'))
2727
{
2828
return parent::hasOne($related, $foreignKey, $localKey);
2929
}
@@ -50,7 +50,7 @@ public function hasOne($related, $foreignKey = null, $localKey = null)
5050
public function morphOne($related, $name, $type = null, $id = null, $localKey = null)
5151
{
5252
// Check if it is a relation with an original model.
53-
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model'))
53+
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Eloquent\Model'))
5454
{
5555
return parent::morphOne($related, $name, $type, $id, $localKey );
5656
}
@@ -77,7 +77,7 @@ public function morphOne($related, $name, $type = null, $id = null, $localKey =
7777
public function hasMany($related, $foreignKey = null, $localKey = null)
7878
{
7979
// Check if it is a relation with an original model.
80-
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model'))
80+
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Eloquent\Model'))
8181
{
8282
return parent::hasMany($related, $foreignKey, $localKey);
8383
}
@@ -104,7 +104,7 @@ public function hasMany($related, $foreignKey = null, $localKey = null)
104104
public function morphMany($related, $name, $type = null, $id = null, $localKey = null)
105105
{
106106
// Check if it is a relation with an original model.
107-
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model'))
107+
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Eloquent\Model'))
108108
{
109109
return parent::morphMany($related, $name, $type, $id, $localKey);
110110
}
@@ -145,7 +145,7 @@ public function belongsTo($related, $foreignKey = null, $otherKey = null, $relat
145145
}
146146

147147
// Check if it is a relation with an original model.
148-
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model'))
148+
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Eloquent\Model'))
149149
{
150150
return parent::belongsTo($related, $foreignKey, $otherKey, $relation);
151151
}
@@ -238,7 +238,7 @@ public function belongsToMany($related, $collection = null, $foreignKey = null,
238238
}
239239

240240
// Check if it is a relation with an original model.
241-
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model'))
241+
if (! is_subclass_of($related, 'Jenssegers\Mongodb\Eloquent\Model'))
242242
{
243243
return parent::belongsToMany($related, $collection, $foreignKey, $otherKey, $relation);
244244
}

src/Jenssegers/Mongodb/Model.php renamed to src/Jenssegers/Mongodb/Eloquent/Model.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?php namespace Jenssegers\Mongodb;
1+
<?php namespace Jenssegers\Mongodb\Eloquent;
22

33
use Carbon\Carbon;
44
use DateTime;

src/Jenssegers/Mongodb/MongodbServiceProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php namespace Jenssegers\Mongodb;
22

33
use Illuminate\Support\ServiceProvider;
4+
use Jenssegers\Mongodb\Eloquent\Model;
45

56
class MongodbServiceProvider extends ServiceProvider {
67

tests/ModelTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public function tearDown()
1313
public function testNewModel()
1414
{
1515
$user = new User;
16-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
16+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user);
1717
$this->assertInstanceOf('Jenssegers\Mongodb\Connection', $user->getConnection());
1818
$this->assertEquals(false, $user->exists);
1919
$this->assertEquals('users', $user->getTable());
@@ -170,7 +170,7 @@ public function testFind()
170170

171171
$check = User::find($user->_id);
172172

173-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $check);
173+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $check);
174174
$this->assertEquals(true, $check->exists);
175175
$this->assertEquals($user->_id, $check->_id);
176176

@@ -188,7 +188,7 @@ public function testGet()
188188
$users = User::get();
189189
$this->assertEquals(2, count($users));
190190
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users);
191-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $users[0]);
191+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $users[0]);
192192
}
193193

194194
public function testFirst()
@@ -199,7 +199,7 @@ public function testFirst()
199199
]);
200200

201201
$user = User::first();
202-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
202+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user);
203203
$this->assertEquals('John Doe', $user->name);
204204
}
205205

@@ -226,7 +226,7 @@ public function testCreate()
226226
{
227227
$user = User::create(['name' => 'Jane Poe']);
228228

229-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
229+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user);
230230
$this->assertEquals(true, $user->exists);
231231
$this->assertEquals('Jane Poe', $user->name);
232232

@@ -454,14 +454,14 @@ public function testRaw()
454454
return $collection->find(['age' => 35]);
455455
});
456456
$this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users);
457-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $users[0]);
457+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $users[0]);
458458

459459
$user = User::raw(function ($collection)
460460
{
461461
return $collection->findOne(['age' => 35]);
462462
});
463463

464-
$this->assertInstanceOf('Jenssegers\Mongodb\Model', $user);
464+
$this->assertInstanceOf('Jenssegers\Mongodb\Eloquent\Model', $user);
465465

466466
$count = User::raw(function ($collection)
467467
{

tests/models/Address.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
use Jenssegers\Mongodb\Model as Eloquent;
3+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
44

55
class Address extends Eloquent {
66

tests/models/Book.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
use Jenssegers\Mongodb\Model as Eloquent;
3+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
44

55
class Book extends Eloquent {
66

tests/models/Client.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
use Jenssegers\Mongodb\Model as Eloquent;
3+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
44

55
class Client extends Eloquent {
66

tests/models/Group.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
use Jenssegers\Mongodb\Model as Eloquent;
3+
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
44

55
class Group extends Eloquent {
66

0 commit comments

Comments
 (0)