【发布时间】:2017-06-02 03:46:27
【问题描述】:
编辑:只是为了节省时间,因为有些人会添加响应但不阅读 cmets。看来,虽然我们可以即时设置表格,它适用于获取和获取,但它不适用于更新。
现在是原始问题:
我有一个动态表名的问题,我可以通过我尝试过的代码来最好地解释: 这就是我的工作和工作:
$ymodel = new \App\YCenter;
$ymodel->setTable('tableNo1');
$tops = $ymodel->take(10)->get();
var_dump($tops);
但这是我尝试过的:
$ymodel = new \App\YCenter;
$ymodel->setTable('tableNo1');
$ymodel->updateOrCreate(
['url' => 'heyhey','article_id' => 1],
['text'=>'texttext']
);
得到了这个错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table
'mydatabase.y_centers' doesn't exist (SQL: insert into `y_centers`...
有什么想法吗?提前致谢。
编辑:我们的想法是即时设置表格,这就是我这样做的原因。我不想在模型本身上设置表格。
【问题讨论】:
-
您设置了“tableNo1”,但错误提示找不到表“y_centers”。您是否在模型中定义了
$table? -
没有涡流。我没有因为表格会根据代码而改变。这不就是可设置方法的全部思想吗?
-
是的,但是您正在设置的表和错误有两个不同的名称。好吧,在您提供的示例中。无论如何,错误来自 MYSQL 本身,说该表不存在。所以我的问题是,该表是否已经存在?
-
如您所见,表的名称相同,只是为了确保我再次运行脚本。似乎 settable 适用于 get() 和 first() 但不适用于 updateorcreate。
-
好的,那么你可以避免使用它。但是在您的示例中,表名不一样。在您的代码中,您编写了
$ymodel->setTable('tableNo1');,但错误显示为'mydatabase.y_centers'。所以似乎没有找到“y_centers”。