使用Eloquent Relationship获取表名

时间:2017-02-17 11:46:51

标签: php laravel-5.2

class SampleELoq extends Model
{
    use SoftDeletes;

    public function conditionFields() {
       return $this->belongsToMany('App\EloquentModel\ConditionField');
    }
}

nameSpace是SampleELoq的名称空间

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

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

print_r(Schema::getColumnListing($table));

我怎样才能获得conditionFields的表名?

4 个答案:

答案 0 :(得分:1)

在努力挖掘之后我找到了解决方案。它可以像这样实现。

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

一般

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

答案 1 :(得分:1)

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

Model::first()->conditionFields()->getRelated()->getTable()

答案 2 :(得分:0)

你有两种方法: -

     dd(Model::$table);

或在您的模型中: -

 dd($this->table());

答案 3 :(得分:0)

您不必像Catain Fail的答案那样从数据库中检索模型:在任何情况下都可以获取相关的表名,如下所示:

$relation = (new MyModel)->myRelationship(); // Returns a Relations subclass like BelongsTo or HasOne.
$relatedModel = $relation->getRelated(); // Returns a new empty Model
$tableName = $relatedModel->getTable();

或者简而言之:

$tableName = (new MyModel)->myRelationship()->getRelated()->getTable();