在ORM中放置模型代码的位置? (雄辩)

时间:2013-04-06 02:41:34

标签: php codeigniter orm eloquent

我不太明白我的代码在哪里用于这个orm。

class Brand_model extends MY_Model {

public function add_brand($name, $size)
{
//goal:
//        $sql = "insert into brand (name, size_id) values (?,?)";
//        $query = $this->db->query($sql, array($name, $size));

    $brand = new self();
    $brand->name=$name;
    $brand->size=$size;
    $brand->save();


}

这会在相应的表中的数据库中生成一个新行,但其中没有数据。但是我确信这些变量已经填满了。有任何想法吗?

我的设计模式是将几乎所有东西都放在模型中。这样,如果多个控制器需要相同的数据结构,我会调用一次函数并处理所有验证/等。

谢谢!

2 个答案:

答案 0 :(得分:0)

请找到eloquent和codeigniter集成的链接

http://mannyisles.com/using-eloquent-orm-inside-codeigniter.html

答案 1 :(得分:0)

要使用ORM,首先需要建立连接。您可以查看this answer。它告诉您如何设置雄辩的数据库连接。

完成后,您需要创建一个扩展ORM的模型,并使用该模型执行所有数据库调用。

你可以创建一个文件 - 假设,FooModel.php是这样的:

<?php

namespace Models\FooModel;

use Illuminate\Database\Eloquent\Model;

class FooModel extends Model
{
    protected $table = 'sample_table';
    protected $fillable = array('comma', 'seperated', 'column', 'names');

    protected $hidden = array('id');
    public $timestamps = true;
}
?>

$fillable告诉eloquent您要写入哪些列。您可以忽略自动递增列和具有默认值的列。 $timestamps处理您的created_at和updated_at列(如果有的话)。

当您必须创建行时,您可以调用雄辩的create()函数。此函数需要一个关联数组,其列名为键,值为您要插入该列的相应值。

$row = array('name' => 'Foo',
     'email' => 'foo@bar.com'
);

然后您可以调用create函数,并将$row作为参数。

$response = FooModel::create($row);

如果您执行var_dump($response);,则可以看到create()的状态。 true表示成功或错误消息。

有关详细信息,请查看Docs。真的不是那么难!

干杯! :)