我在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名称吗?
转储对象不一定能为您提供对象结构的表示,而是通过魔术__debugInfo()方法定义的自定义格式化调试信息.
https://github.com/cakephp/cakephp/blob/3.0.11/src/ORM/Table.php#L2190
Table类没有table或alias属性,但具有相同名称的方法,只需查看Cookbook和API文档.
$alias = $event->subject()->alias();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |