Laravel settable不能按预期工作

时间:2017-01-17 22:16:25

标签: laravel model eloquent

编辑:只是为了节省时间,因为有些人会添加回复,但不会阅读评论。看起来虽然我们可以动态设置表格,但它适用于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`...

有什么想法吗?提前谢谢。

编辑:想法是动态设置表格,这就是我这样做的原因。我不想在模型本身上设置表格。

1 个答案:

答案 0 :(得分:0)

一些laravel方法创建了对象的新实例

这不起作用:

 $someModel = new RunTimeObject();
 $someModel->setTable('newTable');
 return $someModel->all();

这是由于all()在后台创建了一个新的someModel。 如果您使用非静态方法:(例如-> get())

    $runtime = new RunTimeObject();
    $runtime->setTable('newTable');
    return $runtime->get();

它将起作用,所以您只能使用非静态方法