在ORM中把模型代码放在哪里?(Eloquent)


Where to put model code in 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();

}

这在数据库中适当的表中生成了一个新行,但其中没有数据。但是我确信这些变量已经被填充。有什么想法吗?

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

THanks!

请找到雄辩和代码点火器集成的链接

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

要使用ORM,首先需要设置连接。你可以看看这个答案。它告诉您如何建立雄辩的数据库连接。

完成后,您需要创建一个模型,该模型将扩展ORM,并使用该模型进行所有DB调用。

你可以创建一个文件,比如说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告诉你想写哪些专栏。您可以忽略自动递增的列和具有默认值的列。$timestamps处理created_at和updated_at列(如果有(。

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

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

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

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

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

有关更多信息,您可以查看文档。真的没那么难!

干杯!:(