使用 Eloquent 关系获取表名

vin*_*vin 4 php laravel-5.2

class SampleELoq extends Model
{
    use SoftDeletes;

    public function conditionFields() {
       return $this->belongsToMany('App\EloquentModel\ConditionField');
    }
}
Run Code Online (Sandbox Code Playgroud)

nameSpace 是 SampleELoq 的命名空间

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

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

print_r(Schema::getColumnListing($table));
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

Model::first()->conditionFields()->getRelated()->getTable()
Run Code Online (Sandbox Code Playgroud)


Rob*_*per 5

您不必像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();
Run Code Online (Sandbox Code Playgroud)

或者简而言之:

$tableName = (new MyModel)->myRelationship()->getRelated()->getTable();
Run Code Online (Sandbox Code Playgroud)


Ahm*_*afa 0

你有两种方法:-

     dd(Model::$table);
Run Code Online (Sandbox Code Playgroud)

或者在你的模型中:-

 dd($this->table());
Run Code Online (Sandbox Code Playgroud)