编辑:只是为了节省时间,因为有些人会添加回复,但不会阅读评论。看起来虽然我们可以动态设置表格,但它适用于get和take,但它不适用于更新。
现在原来的问题:
我遇到动态表名的问题,我可以通过我尝试的代码最好地解释: 这就是我的工作和行动:
$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`...
有什么想法吗?提前谢谢。
编辑:想法是动态设置表格,这就是我这样做的原因。我不想在模型本身上设置表格。
答案 0 :(得分:0)
一些laravel方法创建了对象的新实例
这不起作用:
$someModel = new RunTimeObject();
$someModel->setTable('newTable');
return $someModel->all();
这是由于all()在后台创建了一个新的someModel。 如果您使用非静态方法:(例如-> get())
$runtime = new RunTimeObject();
$runtime->setTable('newTable');
return $runtime->get();
它将起作用,所以您只能使用非静态方法