GVKun编程网logo

Laravel基础课 使用查询构造器删除数据(laravel查询数据库)

20

本篇文章给大家谈谈Laravel基础课使用查询构造器删除数据,以及laravel查询数据库的知识点,同时本文还将给你拓展CI查询构造器类(插入数据、更新数据、删除数据)、Laravel-使用查询构造器

本篇文章给大家谈谈Laravel基础课 使用查询构造器删除数据,以及laravel查询数据库的知识点,同时本文还将给你拓展CI查询构造器类(插入数据、更新数据、删除数据)、Laravel - 使用查询构造器查询、laravel - 使用查询构造器进行数据的增删改查、laravel - 查询构造器等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Laravel基础课 使用查询构造器删除数据(laravel查询数据库)

Laravel基础课 使用查询构造器删除数据(laravel查询数据库)

删除所有数据返回删除行数
$num=DB::table('student')
->delete();
//删除指定id的数据
$num=DB::table('student')
->where('id',1006)
->delete();
//条件删除
$num=DB::table('student')
->where('id','>=',12)
->delete();
//清空数据表,没有返回值
$um=DB::table('student')->truncate();

CI查询构造器类(插入数据、更新数据、删除数据)

CI查询构造器类(插入数据、更新数据、删除数据)

1. 插入数据

1.1 $this->db->insert()

该方法根据你提供的数据生成一条 INSERT 语句并执行,它的参数是一个**数组** 或一个**对象**,下面是使用数组的例子:

$data = array(
    ''title'' => ''My title'',
    ''name'' => ''My Name'',
    ''date'' => ''My date''
);

$this->db->insert(''mytable'', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES (''My title'', ''My name'', ''My date'')

第一个参数为要插入的表名,第二个参数为要插入的数据,是个关联数组。

下面是使用对象的例子:

/*
class Myclass {
    public $title = ''My Title'';
    public $content = ''My Content'';
    public $date = ''My Date'';
}
*/

$object = new Myclass;
$this->db->insert(''mytable'', $object);
// Produces: INSERT INTO mytable (title, content, date) VALUES (''My Title'', ''My Content'', ''My Date'')

第一个参数为要插入的表名,第二个参数为要插入的数据,是个对象。

 

1.2  $this->db->get_compiled_insert()

该方法和 $this->db->insert() 方法一样根据你提供的数据生成一条 INSERT 语句,但是并不执行。

 

例如:

$data = array(
    ''title'' => ''My title'',
    ''name''  => ''My Name'',
    ''date''  => ''My date''
);

$sql = $this->db->set($data)->get_compiled_insert(''mytable'');
echo $sql;

// Produces string: INSERT INTO mytable (`title`, `name`, `date`) VALUES (''My title'', ''My name'', ''My date'')

第二个参数用于设置是否重置查询(默认情况下会重置,正如 $this->db->insert() 方法一样):

echo $this->db->set(''title'', ''My Title'')->get_compiled_insert(''mytable'', FALSE);

// Produces string: INSERT INTO mytable (`title`) VALUES (''My Title'')

echo $this->db->set(''content'', ''My Content'')->get_compiled_insert();

// Produces string: INSERT INTO mytable (`title`, `content`) VALUES (''My Title'', ''My Content'')

上面的例子中,最值得注意的是,第二个查询并没有用到 $this->db->from() 方法, 也没有为查询指定表名参数,但是它生成的 SQL 语句中有 INTO mytable 子句。 这是因为查询并没有被重置(使用 $this->db->insert() 方法会被执行并被重置, 使用 $this->db->reset_query() 方法直接重置)。

 

1.3  $this->db->insert_batch()

 

该方法根据你提供的数据生成一条 INSERT 语句并执行,它的参数是一个**数组** 或一个**对象**,下面是使用数组的例子:

$data = array(
    array(
        ''title'' => ''My title'',
        ''name'' => ''My Name'',
        ''date'' => ''My date''
    ),
    array(
        ''title'' => ''Another title'',
        ''name'' => ''Another Name'',
        ''date'' => ''Another date''
    )
);

$this->db->insert_batch(''mytable'', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES (''My title'', ''My name'', ''My date''),  (''Another title'', ''Another name'', ''Another date'')

第一个参数为要插入的表名,第二个参数为要插入的数据,是个二维数组。

 

2. 更新数据

2.1  $this->db->replace()

该方法用于执行一条 REPLACE 语句,REPLACE 语句根据表的**主键**和**唯一索引** 来执行,类似于标准的 DELETE + INSERT 。 使用这个方法,你不用再手工去实现 select()update()delete() 以及 insert() 这些方法的不同组合,为你节约大量时间

例如:

$data = array(
    ''title'' => ''My title'',
    ''name''  => ''My Name'',
    ''date''  => ''My date''
);

$this->db->replace(''table'', $data);

 

 

注解这个方法不支持批量插入。

 

Laravel - 使用查询构造器查询

Laravel - 使用查询构造器查询

public function constructorQuery()     {         # 1,新增         DB::table('student')->insert([             ['name' => '王者之锤', 'age' => 18],             ['name' => '地狱之眼', 'age' => 30]         ]);   # .....      }

laravel - 使用查询构造器进行数据的增删改查

laravel - 使用查询构造器进行数据的增删改查

1. 插入数据 ->insert()

 // 使用查询构造器query builder 插入数据
        $bools = DB::table('student')->insert(['name'=>'sean', 'age'=>18]);
        var_dump($bools);

        // 插入多条数据
        $bools = DB::table('student')->insert([
            ['name'=>"jean", 'age'=>10],
            ['name'=>'kate', 'age'=>27],
        ]);
        var_dump($bools);

        // 插入的同时返回id
        $id = DB::table('student')->insertGetId(['name'=>'lilei', 'age'=>30]);
        var_dump($id);

2. 更改数据 -> update()

 // 使用查询构造器query builder 更新数据

        // 更新一条数据
        $num = DB::table('student')->where('id',1003)->update(['name'=>'hanmeimei']);
        var_dump($num);

        // 自增(将某列加上一个数,默认是 +1 )
        $num = DB::table('student')->where('id', 1003)->increment('age', 10);
        var_dump($num);

        // 自减 (将某列减去一个数, 默认是-1)
        $num = DB::table('student')->where('id', 1003)->decrement('age', 3);
        var_dump($num);

        // 自增的同时,修改其他列的内容
        $num = DB::table('student')->where('id', 1003) -> increment('age', 3, ['name'=>'tony']);
        var_dump($num);

laravel - 查询构造器

laravel - 查询构造器

获取数据

1,从数据表中获取所有行

<?PHP

class UserController extends Controller{

       public function index(){

                  $users = DB::table(‘users‘)->get();

      }

}

从数据表中获取一行数据你可以使用first方法。该方法返回一个stdclass对象

$user = DB::table("users")->where(“name”,"John")->first()

如果不需要正行数据,则可以使用value方法从记录中获取单个值。该方法直接返回该字段得值:

$email = DB::table(‘users‘)->where("name","John")->value("email");

获取一列得值,则可以使用pluck方法。在下面得例子中,我们将获取角色表中得标题得集合

$titles = DB::table("roles")->pluck("title");

foreach($titles as $title){

       echo $title;  

}

你还可以在返回得集合中指定字段得自定义键值:

$roles = DB::table("roles")->pluck("title","name")

foreach($roles as $name=>$title){

            echo $title;

}

2,分块结果

如果你需要处理上千条数据库记录。你可以考虑使用 chunk 方法。该方法一次获取结果集得一小块,并将其传递给 闭包 函数进行处理。该方法在 Artisan命令 编写数千条处理数据得时候非常有用。力图我们可以将全部表数据切割成一次处理100条记录得一小块:

DB::table("users)->orderBy("id")->chunk(100,function($users){

          foreach($users as $user){

          }

})

你可以通过在 闭包 中返回 false 来终止继续获取分块结果:

DB::table(‘users‘)->orderBy(‘id‘)->chunk(100,function(){

        return false;

})

聚合

查询构造器还提供了各种聚合方法,比如count 、max 、min 、 avg 还有 sum。 你可以在构造查询后调用任何方法:

$user = DB:table("users")->count():

$price = DB::table(‘orders‘)->max("price");

当然,你也可以将这些聚合方法和其他得查询语句结合:

$price = DB::table(‘orders‘)->where("finalized",1)->avg(‘price‘);

3,判断记录是否存在

除了count 方法可以确定查询条件得结果是否存在之外,还可以使用existsdoesntExist方法:

return DB::table(‘orders‘)->where("finalized",1)->exists();

return DB::table("orders")->where(‘finalized‘,1)->doesntExist();

selects 语句

指定一个select语句

当然你可能并不总是希望从数据表中获取所有列。使用 select  方法,你可以自定义一个 select 查询语句来查询指定的字段:

$users = DB::table(‘users‘)->select("name","emal as user_email ")->get();

distinct 方法会强制让查询返回得结果不重复:

$users = DB::table(‘users‘)->distinct()->get();

如果你已经有了一个查询构造器实例,并且希望在现有得查询语句中加入一个字段,那么你可以使用addSelect方法

$query = DB::table(‘users‘)->select(‘name‘);

$users = $query->addSelect(‘age‘)->get();

4,原生表达式

有时候你可能需要在查询中使用原生表达式。你可以使用DB:raw创建一个原生表达式:

$users = DB::table(‘users‘)

              ->select(DB::raw(‘count(*) as user_count,status ’))

              ->where(‘status‘,‘<>‘,1)

               ->groupBy("status")

               ->get();

注:原生表达式将会被当做字符串注入到查询中,因此你应该小心使用,避免创建sql注入得漏洞

原生方法

可以使用以下方法代替 DB::raw ,将原生表达式插入查询得各个部分。

selectRow 方法可以代替 select(DB::raw(...))。该方法得第二个参数是可选项,值是一个绑定参数得数组:

$order = DB::table(‘orders‘)

               ->selectRaw(‘price * ? as price_with_tax ‘,[1.0825])

               ->get();

whereRaw/orWhereRaw

whereRaw 和 orWhereRaw 方法将原生得where

注入到你得查询中。这两个方法得第二个参数还是可选项,值还是绑定参数得数组:

$orders = DB::table(‘orders‘)

                ->whereRaw(‘ price > IF(state = "TX",?,100) ‘,[200] )

                ->get();

注:数据转化  

       把数据转为数组  toArray()

       把数据转为json   toJson()

关于Laravel基础课 使用查询构造器删除数据laravel查询数据库的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于CI查询构造器类(插入数据、更新数据、删除数据)、Laravel - 使用查询构造器查询、laravel - 使用查询构造器进行数据的增删改查、laravel - 查询构造器的相关信息,请在本站寻找。

本文标签: