PHP笔记-laravel框架中Eloquent ORM实现增删改查
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP笔记-laravel框架中Eloquent ORM实现增删改查相关的知识,希望对你有一定的参考价值。
表结构是这样的:
/*
SQLyog Ultimate v12.09 (64 bit)
mysql - 5.7.12 : Database - laravel
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`laravel` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
USE `laravel`;
/*Table structure for table `student` */
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*Data for the table `student` */
insert into `student`(`id`,`name`,`age`) values (2,'小张',19),(3,'小明',18),(4,'小张',19);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
源码如下:
路由web.php添加:
Route::prefix('student')->group(function()
......
......
Route::get('ormInsert', 'StudentController@ormInsert');
Route::get('ormDelete', 'StudentController@ormDelete');
Route::get('ormModify', 'StudentController@ormModify');
Route::get('ormSelect', 'StudentController@ormSelect');
);
这个config/database.php是数据库相关的设置,目前不用改,对应mysql是这样的
需要修改的是
.env
修改为如下:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
新建Student.php
代码如下:
<?php
namespace App;
use Illuminate\\Database\\Eloquent\\Model;
class Student extends Model
// 指定表名
protected $table = 'student';
// 指定ID
protected $primaryKey = 'id';
// 自动维护时间戳
public $timestamps = true;
// 指定允许批量赋值的字段
protected $fillable = ['name', 'age'];
// 指定不允许批量赋值的字段
protected $guarded = [];
// protected function getDateFormat()
//
// return time();
//
//
// protected function asDateTime($val)
//
// return $val;
//
新建StudentController.php
<?php
namespace App\\Http\\Controllers;
use App\\Student;
use Illuminate\\Support\\Facades\\DB;
class StudentController extends Controller
......
......
......
public function ormInsert()
$student = new Student();
$student->name = '小红';
$student->age = 19;
$bool = $student->save();
// dd($bool);
$student = Student::create(
['name' => '小张', 'age' => 20]
);
// dd($student);
//firstOrCreate()
$student = Student::firstOrCreate(
['name' => '小王', 'age' => 32]
);
// dd($student);
//firstOrNew这个需要手动保存
$student = Student::firstOrNew(
['name' => '小黑', 'age' => 33]
);
$bool = $student->save();
dd($bool);
return "ormInsert";
public function ormDelete()
// 通过模型删除
$student = Student::find(1);
$bool = $student->delete();
var_dump($bool);
// 通过主键删除
$num = Student::destroy(2);
var_dump($num);
$num = Student::destroy([2, 3]);
var_dump($num);
// 条件删除
$num = Student::where('id', '>', 10)->delete();
var_dump($num);
return "ormDelete";
public function ormModify()
$student = Student::find(1);
$student->name = 'kitty';
$bool = $student->save();
var_dump($bool);
$num = Student::where('id', '>', 5)->update(
['age' => 38]
);
var_dump($num);
return "ormModify";
public function ormSelect()
$student = Student::find(1);
dd($student);
return "ormSelect";
以上是关于PHP笔记-laravel框架中Eloquent ORM实现增删改查的主要内容,如果未能解决你的问题,请参考以下文章
PHP框架 Laravel Eloquent ORM 批量插入数据,怎么实现
用于原始 SQL 查询的等效 Laravel Eloquent
php Laravel 5 Eloquent CheatSheet #laravel #eloquent