我们说我有这个雄辩的模型类:
class Fruit extends Model
{
//whatever not following the conventions
protected $table = 'the_fruit_table';
}
在我的代码中的某个地方,我有一个表名为
的变量$table_name = 'the_fruit_table';
有没有办法获得对该表负责的模型名称? 所以在这种情况下我会得到字符串:
'\App\Fruit'
答案 0 :(得分:0)
如果您遵循laravel命名约定,可以尝试以下
$class = '\YourModelsNamespace\' . studly_case(str_singular($table))
答案 1 :(得分:0)
如果您使用的是默认命名系统,则可以获得类名:
$class = 'App\\'.ucwords(rtrim(camel_case($table_name),'s'));
然后检查该类是否存在:
if(class_exists($class)){
//do something
}
最后你可以这样使用它:
$result = $class::all()
答案 2 :(得分:0)
技术上可行:
$className = \Propel::getDatabaseMap()->getTable('the_fruit_table')->getClassName();
可是:
1)FruitPeer必须已经(自动)加载,因为在BaseFruitPeer的末尾有魔术线:
BaseFruitPeer::buildTableMap();
2)此示例假定您使用的是默认数据库。如果不是,则必须将其提供给getDatabaseMap()。
Propel充满了惊喜。