如何从行为中的事件获取tablename

DJ *_*Far 1 cakephp-3.0

我在CakePHP 3.0.11中编写了一个行为,我可以在我的行为的beforeSave()方法中使用var_dump()和Log :: debug()$ event对象,并且可以看到对象数据,但无法访问对象的属性.我只是想从对象中获取表(别名,className,tablename,any)名称.
我想在我的行为中做这样的事情:

public function beforeSave(Event $event, Entity $entity)
{
    $table = $event->_alias;
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

我尝试了事件的subject()方法,该方法从事件中提取表对象,

$table = $event->subject();
Run Code Online (Sandbox Code Playgroud)

当我var_dump或调试返回的对象时,它显示:

Debug: App\Model\Table\CompaniesTable Object
(
    [registryAlias] => Companies
    [table] => companies
    [alias] => Companies
    [entityClass] => App\Model\Entity\Company
    [associations] => Array
        (
            [0] => defaultshippingusers
    (...)
    [defaultConnection] => default
    [connectionName] => default
)
Run Code Online (Sandbox Code Playgroud)

但我不能从我的$ table对象访问'table','alias'等.当我这样做时,我得到一个致命的错误:

表公司与'别名'无关

有一种简单的方法可以从行为中的$ event对象中获取Table名称吗?

ndm*_*ndm 7

转储对象不一定能为您提供对象结构的表示,而是通过魔术__debugInfo()方法定义的自定义格式化调试信息.

https://github.com/cakephp/cakephp/blob/3.0.11/src/ORM/Table.php#L2190

Table类没有tablealias属性,但具有相同名称的方法,只需查看Cookbook和API文档.

$alias = $event->subject()->alias();
Run Code Online (Sandbox Code Playgroud)