现在,我有了这段代码来检查Eloquent模型连接到哪个表。
$s = new Something();
dd($s->getTable());
无论如何我是否可以在不实例化新Something
对象的情况下获取表?
我在想像这样的代码:
Something::getTable();
但是会出现..should not be called statically
错误。
答案 0 :(得分:4)
您可以添加到模型中。
public static function getTableName()
{
return (new self())->getTable();
}
然后您可以使用Something::getTableName()
答案 1 :(得分:1)
这里稍作修改,以便您可以静态获取模型的表名。
User
app/Traits/CanGetTableNameStatically.php
<?php namespace App\Traits;
trait CanGetTableNameStatically
{
public static function tableName()
{
return with(new static)->getTable();
}
}
,或者更好的是使用Model
,所有其他模型都会对其进行扩展。 BaseModel
app/Models/BaseModel.php
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
use CanGetTableNameStatically;
// ...
}
protected $table
app/Models/Customer.php
用法:只需在任何地方致电<?php namespace App\Models\Master;
use App\Models\BaseModel;
class Customer extends BaseModel
{
protected $table = 'my_customers';
// ...
}
。
视图中
YourModel::tableName()
加入时:
{{ \App\Models\Customer::tableName() }}
答案 2 :(得分:0)
$ model =新模型; echo $ model-> getTable(); 试试这个
答案 3 :(得分:0)
不是静态而是优雅的方法
with(new Something)->getTable();
答案 4 :(得分:0)
class YourModel extends Model
{
//
public static $_table = "table_name";
}
然后像这样
YourModel::$_table