【问题标题】:Where to put model code in ORM ? (Eloquent)在 ORM 中将模型代码放在哪里? (雄辩)
【发布时间】:2013-04-06 02:41:33
【问题描述】:

我不太明白我的代码在这个 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();


}

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

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

谢谢!

【问题讨论】:

    标签: php codeigniter orm eloquent


    【解决方案1】:

    请找到 eloquent 和 codeigniter 集成的链接

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

    【讨论】:

      【解决方案2】:

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

      完成后,您需要创建一个模型,该模型将扩展 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 列,如果有的话。

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

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

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

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

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

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

      干杯! :)

      【讨论】:

        猜你喜欢
        • 2014-04-14
        • 2019-09-23
        • 2015-06-08
        • 2015-06-20
        • 2018-01-14
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 2010-12-14
        相关资源
        最近更新 更多