本篇文章给大家谈谈Laravel基础课使用查询构造器删除数据,以及laravel查询数据库的知识点,同时本文还将给你拓展CI查询构造器类(插入数据、更新数据、删除数据)、Laravel-使用查询构造器
本篇文章给大家谈谈Laravel基础课 使用查询构造器删除数据,以及laravel查询数据库的知识点,同时本文还将给你拓展CI查询构造器类(插入数据、更新数据、删除数据)、Laravel - 使用查询构造器查询、laravel - 使用查询构造器进行数据的增删改查、laravel - 查询构造器等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Laravel基础课 使用查询构造器删除数据(laravel查询数据库)
- CI查询构造器类(插入数据、更新数据、删除数据)
- 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查询构造器类(插入数据、更新数据、删除数据)
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 - 使用查询构造器查询
public function constructorQuery() { # 1,新增 DB::table('student')->insert([ ['name' => '王者之锤', 'age' => 18], ['name' => '地狱之眼', 'age' => 30] ]); # ..... }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 - 查询构造器
获取数据
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 方法可以确定查询条件得结果是否存在之外,还可以使用exists和doesntExist方法:
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 - 查询构造器的相关信息,请在本站寻找。
本文标签: