2014-03-27 47 views
0

我试图将表名传递给我的模型,因为模型在两个表上运行,但具有相同的方法。在模型中设置表名称?

我这样做,像这样:

$this->model = new Emotions(array('section' => 'red')); 

和模型我设置表所示:

public function __construct($attributes = array(), $exists = false){ 

    parent::__construct($attributes, $exists); 
    $this->table = $attributes['section']; 
} 

但我得到的错误:

Undefined index: section 

任何想法哪里我错了?

+0

奇怪。我测试过了,你的代码工作正常。你有没有试过传递一个非关联数组来查看是否有效?传递数组('red')并查看是否可以将它作为属性[0]访问。使用不同的字符集有什么改变吗? – tliokos

+0

否 - 未定义偏移量:0 – panthro

+0

问题是,我可以var_dump出$ attributes ['section']并给出正确的输出,只有当我尝试设置$ table时才会失败。 – panthro

回答

0

是的,我明白了,这个类可能运行两次。

请试试这个。

public function __construct($attributes = array(), $exists = false){ 

    parent::__construct($attributes, $exists); 

    if(isset($attributes['section'])) { 
     $this->table = $attributes['section']; 
    } 
} 

我个人的建议

<?php 

class Emotions extends Eloquent 
{ 
    public function setTableName($name) 
    { 
     $this->table = $name; 
     return $this; 
    } 
} 

而且你可以使用这样

$emotion = new Emotions(array('foo' => 'bar')) 
    ->setTableName('blabla') 
    ->save();