gpt4 book ai didi

php - 在数据源中找不到模型表

转载 作者:行者123 更新时间:2023-11-29 00:17:15 24 4
gpt4 key购买 nike

我正在将数据库从由 SQL 转储管理转变为由模式和迁移管理。其中一部分是播种数据。我根据 CakePhp's page about Schemas 上的架构示例所做的工作.

奇怪的是,第一个要植入数据的表没有问题,第二个表失败并出现错误,如 Table users for model User was not found in datasource default。即使我更改要播种的表也会发生这种情况:第一个成功(并且我已在数据库中检查数据是否存在)而下一个要播种的失败。

我还检查了数据库的错误消息,它提示不存在的每个表实际上都存在。

我的“schema.php”看起来像这样:

class AppSchema extends CakeSchema {
public function before($event = array()) {
return true;
}

private function create_many($class_name, $entries){
App::uses('ClassRegistry', 'Utility');
$class = ClassRegistry::init($class_name);
foreach($entries as $entry){
$class->create();
$class->save(array($class_name => $entry));
}
}

private function create_many_kv($class_name, $keys, $values_matrix){
$entries = array();
foreach($values_matrix as $values){
array_push($entries, array_combine($keys, $values));
}
$this->create_many($class_name, $entries);
}

public function after($event = array()) {
if (isset($event['create'])) {
switch ($event['create']) {
case 'users':
$this->create_many('User', array(
array('emailaddress' => 'email',
'password' => 'hash',
'role_id' => 1
),
array('emailaddress' => 'email2',
'password' => 'hash',
'role_id' => 3)
));
break;
case 'other_table':
$this->create_many('OtherTable', array(
array('id' => 1,
'name' => 'datum'),
array('id' => 2,
'name' => 'datum2')
));
break;

etc.

最佳答案

这里我的答案是在创建最后一个表后填充所有表。

我最好的假设是 Cake 将数据库结构缓存在内存中,并且在添加新表时不会更新。我找不到任何关于清除该结构缓存的文档,因此解决方法是目前最接近解决方案的方法。

关于php - 在数据源中找不到模型表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com