添加数据

用AR模式进行数据保存

  1. public function createTest() {
  2. // 实例化模型, 将数据表和模型类映射起来
  3. $category = new Category();
  4. // 给属性赋值, 将字段与属性映射起来
  5. $category -> cat_name = "电脑";
  6. $category -> parent_id = 0;
  7. $category -> cat_desc = "笔记本, 台式机, 一体机";
  8. $category -> sort_order = 50;
  9. $category -> unit = 10000;
  10. $category -> is_show = 1;
  11. // save() 将模型保存到数据库中(根据映射关系), 返回Bool值
  12. if ($category -> save()) {
  13. echo "保存成功";
  14. }
  15. }

对应数据表的设计如下
model_table_design.jpg

通过 Request 类进行数据保存

Request 相关的实例方法

$request -> all();    // 获取该request的所有输入与文件
$request -> input('item');    // 在request中检索指定的输入项
$request -> only(['key1', 'key2', ...]);    // 获取request中所有指定key对应值, 以数组返回
$request -> except(['key1', 'key2', ...]);    // 获取request中除了指定key对应值外的所有值, 以数组返回
$request -> has('key');    // 判断该request中是否包含指定key对应的值
$request -> get('key');    // 获取指定key对应的值

视图的表单代码

<form action="requestTest" method="post"><br>
    分类名称 <input type="text" name="cat_name"><br>
    所属分类 <input type="text" name="parent_id"><br>
    分类描述 <input type="text" name="cat_desc"><br>
    排序权重 <input type="text" name="sort_order"><br>
    品类数量 <input type="text" name="unit"><br>
    是否展示 <input type="text" name="is_show"><br>
    <input type="submit" value="提交">
    {{csrf_field()}}
</form>

控制器的代码

/**
 * Laravel的控制器, 默认引入了 Illuminate\Http\Request;
 * Request类: 可以获取所有的请求数据
 * 要使用 Request, 必须将其作为形参, 在方法声明中引入
 */
public function requestTest(Request $request) {

    // 以关联数组的形式返回请求中所有的输入
    $allInput = $request -> all();
    var_dump($allInput);

    echo "------------ Separator ----------";

    /**
     * create() 方法 在Illuminate\Database\Eloquent\Builder 中查到相关说明,
     * 1. 创建调用类(Category)的实例对象
     * 2. 保存模型数据 (根据数组内容, 为模型属性设置对应的值)
     * 3. 返回该实例对象
     */
    $category = Category::create($allInput);
    var_dump($category);
}
<a name="5c312d75"></a>
## 查询数据
<a name="Hg6NN"></a>
### find() 的使用

/**

  • find() 方法 在Illuminate\Database\Eloquent\Builder 中查到相关说明,
  • 根据主键查找对应的模型, 参数为主键值, 返回调用类(Category)的实例对象 */ // $data = Category::find(8); // var_dump($data);

// AR模式的写法, 与上述两行代码实现效果一样 $category = new Category(); $data = $category -> find(8);

// 将模型的属性转换成 关联数组 $result = $data -> attributesToArray(); dd($result);

<a name="gcdgt"></a>
### get() 的使用
```php
/**
 * get() 方法 在Illuminate\Database\Eloquent\Builder 中查到相关说明,
 * 查询所有数据, 类似于 SELECT *
 * 以数组形式返回表内所有数据, 每个元素都是调用类(Category)的实例对象
 */
$results = Category::get();
foreach ($results as $key => $value) {
    $result = $value -> attributesToArray();
    var_dump($result);
}

结合 where 的使用

/**
 * where() 方法 在Illuminate\Database\Eloquent\Builder 中查到相关说明,
 * 为查询语句添加 where 条件, 返回调用类或对象
 * get() 可以与其他的辅助查询方法联用
 */
$results = Category::where('cat_id', '<', '3') -> get();
dd($results -> toArray());

all() 的使用

/**
 * all() 方法 在Illuminate\Database\Eloquent\Model 中查到相关说明,
 * 从数据库中获取该表所有的模型
 * all() 无法与其他的辅助查询方法联用, 仅能直接获取所有模型, 无法增加条件限制
 */
$results = Category::all() -> toArray();
dd($results);

更新数据

AR模式进行数据更新

$data = Category::find(4);
// 修改字段值
$data -> cat_desc = "男士服装专题";
// 保存到数据库
$result = $data -> save();

dd($result);

update() 的使用

/**
 * update() 方法 在Illuminate\Database\Eloquent\Builder 中查到相关说明
 * 更新数据库中该表的某条记录, 返回受影响的记录数
 * 参数以数组形式传递, key 对应要更新的字段, value 对应该字段更新后的值, 多个更新以逗号隔开
 */
$result = Category::where('cat_id', '5') -> update([
    'cat_desc' => '男女工装衬衫. 休闲衬衫',
    'unit' => 1000,
]);
dd($result);

删除数据

// 使用AR模式进行数据删除
$data = Category::find(18);

/**
 * delete() 方法 在Illuminate\Database\Eloquent\Builder 中查到相关说明
 * 将数据库中该表的某条记录删除
 * 返回删除结果, 成功为 true
 */
if ($data -> delete()) {
    echo "删除成功";
}