Skip to content

Commit 5a085e9

Browse files
authored
[8.x] Add missing fix to DatabaseRule::resolveTableName fix #37580 (#37621)
* add missing fix to DatabaseRule::resolveTableName * style CI fixes
1 parent b4cfbd5 commit 5a085e9

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/Illuminate/Validation/Rules/DatabaseRule.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ public function resolveTableName($table)
6565
if (is_subclass_of($table, Model::class)) {
6666
$model = new $table;
6767

68+
if (Str::contains($model->getTable(), '.')) {
69+
return $table;
70+
}
71+
6872
return implode('.', array_map(function (string $part) {
6973
return trim($part, '.');
7074
}, array_filter([$model->getConnectionName(), $model->getTable()])));

tests/Validation/ValidationExistsRuleTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ public function testItCorrectlyFormatsAStringVersionOfTheRule()
4343
$rule->where('foo', 'bar');
4444
$this->assertSame('exists:users,NULL,foo,"bar"', (string) $rule);
4545

46+
$rule = new Exists(UserWithPrefixedTable::class);
47+
$rule->where('foo', 'bar');
48+
$this->assertSame('exists:'.UserWithPrefixedTable::class.',NULL,foo,"bar"', (string) $rule);
49+
4650
$rule = new Exists('table', 'column');
4751
$rule->where('foo', 'bar');
4852
$this->assertSame('exists:table,column,foo,"bar"', (string) $rule);
@@ -235,6 +239,13 @@ class User extends Eloquent
235239
public $timestamps = false;
236240
}
237241

242+
class UserWithPrefixedTable extends Eloquent
243+
{
244+
protected $table = 'public.users';
245+
protected $guarded = [];
246+
public $timestamps = false;
247+
}
248+
238249
class UserWithConnection extends User
239250
{
240251
protected $connection = 'mysql';

tests/Validation/ValidationUniqueRuleTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ public function testItCorrectlyFormatsAStringVersionOfTheRule()
3535
$rule->where('foo', 'bar');
3636
$this->assertSame('unique:table,column,"Taylor, Otwell",id_column,foo,"bar"', (string) $rule);
3737

38+
$rule = new Unique(PrefixedTableEloquentModelStub::class);
39+
$this->assertSame('unique:'.PrefixedTableEloquentModelStub::class.',NULL,NULL,id', (string) $rule);
40+
3841
$rule = new Unique(EloquentModelStub::class, 'column');
3942
$rule->ignore('Taylor, Otwell', 'id_column');
4043
$rule->where('foo', 'bar');
@@ -87,6 +90,13 @@ class EloquentModelStub extends Model
8790
protected $guarded = [];
8891
}
8992

93+
class PrefixedTableEloquentModelStub extends Model
94+
{
95+
protected $table = 'public.table';
96+
protected $primaryKey = 'id_column';
97+
protected $guarded = [];
98+
}
99+
90100
class NoTableName extends Model
91101
{
92102
protected $guarded = [];

0 commit comments

Comments
 (0)