Php 使用雄辩关系获取表名

Php 使用雄辩关系获取表名,php,laravel-5.2,Php,Laravel 5.2,nameSpace是SampleLoq的名称空间 class SampleELoq extends Model { use SoftDeletes; public function conditionFields() { return $this->belongsToMany('App\EloquentModel\ConditionField'); } } 如何获取条件字段的表名?有两种方法:- $Eloq = $nameSpace::find(1

nameSpace是SampleLoq的名称空间

class SampleELoq extends Model
{
    use SoftDeletes;

    public function conditionFields() {
       return $this->belongsToMany('App\EloquentModel\ConditionField');
    }
}
如何获取条件字段的表名?

有两种方法:-

$Eloq = $nameSpace::find(1);

$table = with(new $nameSpace->conditionFields)->getTable();

print_r(Schema::getColumnListing($table));
或在您的模型内:-

     dd(Model::$table);

经过努力挖掘,我找到了一个解决办法。它可以这样实现

 dd($this->table());
一般来说

$tableName = (new SampleELoq)->conditionFields()->getTable();

要从conditionFields中获取表,您需要返回关系模型,然后可以通过getTable方法获取表。 有些像这样

$tableName = (new MODELCLASS)->RELATIONSHIP()->getTable();

您不必像中的回答那样从数据库中检索模型:您可以在以下任何情况下获取相关表名:

$relation=(新的MyModel)->myRelationship();//返回一个关系子类,如BelongsTo或HasOne。
$relatedModel=$relation->getRelated();//返回一个新的空模型
$tableName=$relatedModel->getTable();
简言之:

$tableName=(新MyModel)->myRelationship()->GetRelationship()->getTable();

getTable应该返回表名。$table中得到了什么?这是不正确的,并导致以下错误:
调用undefined method/Database/Eloquent/Relations/BelongsTo::getTable()
这会导致从数据库加载第一个模型,这是不必要的,并且会导致空表出错。
Model::first()->conditionFields()->getRelated()->getTable()