导航:首页 > 编程语言 > phpEloquent

phpEloquent

发布时间:2022-12-07 00:40:28

㈠ Eloquent 怎么实现事务

零、什么是 Eloquent Eloquent 是 Laravel 的 'ORM',即 'Object Relational Mapping',对象关系映射。ORM 的出现是为了帮我们把对数据库的操作变得更加地方便。 Eloquent 让一个 'Model类' 对应一张数据库表,并且在底层封装了很多 'function',可以让 Model 类非常方便地调用。 来看一段如下代码: <?php class Article extends \Eloquent { protected $fillable = []; } 'protected $fillable = [];' 这一行代码在这里没有任何价值,是 generator 自动生成的,在此我们不做讨论。 这个类简直再简单不过了,没有指定命名空间,没有构造函数,如果那一行没有意义的代码也不算上的话,这个文件就只有两个有实际意义的东西: 'Article' 和 '\Eloquent'。没错,Eloquent 就是这么屌炸天,只需要继承一下 Eloquent 类,就可以干 'first() find() where() orderBy()' 等非常非常多的事情,这就是面向对象的强大威力。 一、Eloquent 基本用法 Eloquent 中文文档在:laravel-china.org/docs/eloquent 废话不多说,下面我将直接展示 Eloquent 的几种常见用法的代码。 找到 id 为 2 的文章打印其标题 $article = Article::find(2); echo $article->title; 查找标题为“我是标题”的文章,并打印 id $article = Article::where('title', '我是标题')->first(); echo $article->id; 查询出所有文章并循环打印出所有标题 $articles = Article::all(); // 此处得到的 $articles 是一个对象集合,可以在后面加上 '->toArray()' 变成多维数组。 foreach ($articles as $article) { echo $article->title; } 查找 id 在 10~20 之间的所有文章并打印所有标题 $articles = Article::where('id', '>', 10)->where('id', '<', 20)->get(); foreach ($articles as $article) { echo $article->title; } 查询出所有文章并循环打印出所有标题,按照 updated_at 倒序排序 $articles = Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get(); foreach ($articles as $article) { echo $article->title; } 基础使用要点 1. 每一个继承了 Eloquent 的类都有两个 '固定用法' 'Article::find($number)' 'Article::all()',前者会得到一个带有数据库中取出来值的对象,后者会得到一个包含整个数据库的对象合集。 2. 所有的中间方法如 'where()' 'orderBy()' 等都能够同时支持 '静态' 和 '非静态链式' 两种方式调用,即 'Article::where()...' 和 'Article::....->where()'。 3. 所有的 '非固定用法' 的调用最后都需要一个操作来 '收尾',本片教程中有两个 '收尾操作':'->get()' 和 '->first()'。 二、中间操作流 Builder 这个单词可以直译成构造器,但是“中间操作流”更容易理解,因为数据库操作大部分时候都是链式操作的。 中间操作流,请看代码: Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get(); 这段代码的 `::where()->where()->orderBy()` 就是中间操作流。中间操作流用面向对象的方法来理解,可以总结成一句话: 创建一个对象,并不断修改它的属性,最后用一个操作来触发数据库操作。 如何找到中间操作流的蛛丝马迹 中间操作流这个东西,文档里几乎没有任何有价值的信息,那么,我们该怎么找出这个玩意儿呢?很简单,使用以下代码: $builder = Article::where('title', "我是标题")->title; 然后你就会看到下面的错误: 为什么会出现错误?因为 `Article::where()` 了之后依然是 `Builder` 对象,还不是 `Article` 对象,不能直接取 `title`。 “终结者”方法 所谓 “终结者” 方法,指的是在 N 个中间操作流方法对某个 Eloquent 对象进行加工以后,触发最终的数据库查询操作,得到返回值。 `first()` `get()` `paginate()` `count()` `delete()` 是用的比较多的一些 “终结者” 方法,他们会在中间操作流的最后出现,把 SQL 打给数据库,得到返回数据,经过加工返回一个 Article 对象或者一群 Article 对象的集合。 复杂用法示例 复制代码 代码如下: Article::where('id', '>', '100')->where('id', '<', '200')->orWhere('top', 1)->belongsToCategory()->where('category_level', '>', '1')->paginate(10);

㈡ PHP框架 Laravel Eloquent ORM 批量插入数据,怎么实现

PHP框架LaravelEloquentORM批量插入数据是通过传入数组实现的。比如:DB::table('users')->insert(array(array('email'=>'[email protected]','votes'=>0),array('email'=>'[email protected]','votes'=>0),));以上是操作表users,执行insert语句,参数是一个数组,封装了两条数据,这里可以自定义数据,insert内部就编程批量插入了。然后调用save方法:publicstaticfunctioncreate(array$attributes){$model=newstatic($attributes);$model->save();return$model;}

㈢ php eloquent 怎么安装orm

PHP框架 Laravel Eloquent ORM 批量插入数据是通过传入数组实现的。
比如:
DB::table('users')->insert(array(
array('email' => '[email protected]', 'votes' => 0),
array('email' => '[email protected]', 'votes' => 0),
));
以上是操作表users,执行insert语句,参数是一个数组,封装了两条数据,这里可以自定义数据,insert内部就编程批量插入了。

㈣ 如何在 ThinkPHP 中整合 Laravel Eloquent ORM

安装 illuminate/database根据自己使用的 PHP 版本,通过 composer 安装对应的 illuminate/database 版本,例如
composer require illuminate/database:5.3.*
接入到 TP 中
在 ThinkPHPLibraryThinkThink.class.php 文件中的 start方法的最后一行的 App::run(); 上方添加如下代码:
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection([
'driver' => C('DB_TYPE'),
'host' => C('DB_HOST'),
'database' => C('DB_NAME'),
'username' => C('DB_USER'),
'password' => C('DB_PWD'),
'charset' => C('DB_CHARSET'),
'collation' => C('DB_COLLATION'),
'prefix' => C('DB_PREFIX'),
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
解决 E 方法冲突 illuminate/database 的 .php 方法中存在一个方法
/**
* Escape HTML special characters in a string.
*
* @param \Illuminate\Contracts\Support\Htmlable|string $value
* @return string
*/
function e($value)
{
if ($value instanceof Htmlable) {
return $value->toHtml();
}

return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false);
}
与 TP 的 E 方法冲突。

/**
* 抛出异常处理
* @param string $msg 异常消息
* @param integer $code 异常代码 默认为0
* @throws Think\Exception
* @return void
*/
function E($msg, $code=0) {
throw new Think\Exception($msg, $code);
}
我选择注释了 illuminate/database 的方法,搜索后发现没有其他地方用到这个方法,故注释。

完成后就可以愉快地使用 Laravel 的 ORM 来 coding 了。

㈤ PHP框架 Laravel Eloquent ORM 批量插入数据,怎么实现

不是laravel的,,试试吧
ini_set('max_execution_time','0');
$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");

$sql = "insert into test(id,account_id,name,created_time,status) values";

for($i=0; $i<100000; $i++){
$str = strrand(32);
$sql .="('".$str."','assdasa','zhangsan','2015-09-17 07:55:10','active'),";
}
$sql = substr($sql,0,strlen($sql)-1);
var_mp($sql);
if($pdo -> exec($sql)){
echo "插入成功!";
echo $pdo -> lastinsertid();
}

㈥ PHP框架 Laravel Eloquent ORM 批量插入数据,怎么实现


答题不易,互相理解,您的采纳是我前进的动力,感谢您。希望回答对你有帮助,如果有疑问,在后盾人上有详解

㈦ laravel 中的 Eloquent ORM 里,hasOne 和 belongsTo 有什么区别

没什么大区别,在处理代码的时候是没有区别的,唯一的区别就是逻辑上的合理性。
打个比方,一个人有一部手机,在人也就是用户model 中,你肯定要用hasOne 而不是belongsTo,因为你不能说人是属于手机(虽然也可以这样,但不符合常理,会让人觉得莫名其妙);在手机model中使用belongsTo,意味着手机是物件,人是主体,也就是手机是人类的附属品,且只能有一个。使用的方法名也要切合实际,这样读代码自己或别人才能看明白。

在使用时,其结果都是返回当前用户的手机或是手机的用户(你可以选择collection类型也可以选择array类型)。注意。在写方法名的时候,最好使用单数(例如phone或者user)而不是复数(因为手机和人相对的都是单个的,应该用单数,这样的命名才更符合逻辑与事实)。

㈧ Laravel中表单验证里unique在update时怎么排除当前记录

首先确认,后台的用户表,我设计表叫做badmin,每个管理员有用户名(username),有昵称(nickname),有邮箱(email),有密码(password)这里玩个花,使用laravel的migration来建立表(实际上可以用不着使用这个工具建立表)1安装好最基本的laravel框架2创建migration文件:./artisanmigrate:makecreate-badmin-table3发现app/database/migration/下面多了一个php文件:2014_10_19_090336_create-badmin-table.php4往up和down里面增加内容;increments('id’);$table->string(‘nickname',100)->unique();$table->string('username',100)->unique();$table->string('email',100)->unique();$table->string('password',64);$table->timestamps();});}/***Reversethemigrations.**@returnvoid*/publicfunctiondown(){Schema::drop('badmin’);}}5配置好local的database,app/config/local/database.phpPDO::FETCH_CLASS,'default'=>'mysql','connections'=>array('mysql'=>array('driver'=>'mysql','host'=>'localhost','database'=>'test','username'=>'yejianfeng','password'=>'123456','charset'=>'utf8','collation'=>'utf8_unicode_ci','prefix'=>'',),),'migrations'=>'migrations',);6创建数据表:./artisanmigrate--env=local这个时候去数据库看,就发现多了一张badmin表,数据结构如下:CREATETABLE——badmin——(——id——int(10)unsignedNOTNULLAUTO_INCREMENT,——nickname——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——username——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——email——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——password——varchar(64)COLLATEutf8_unicode_ciNOTNULL,——created_at——timestampNOTNULLDEFAULT'0000-00-0000:00:00',——updated_at——timestampNOTNULLDEFAULT'0000-00-0000:00:00',PRIMARYKEY(——id——),UNIQUEKEY——badmin_nickname_unique——(——nickname——),UNIQUEKEY——badmin_username_unique——(——username——),UNIQUEKEY——badmin_email_unique——(——email——))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;要问这里为什么多出了create_at和update_at,这是laravel默认为每个表创建的字段,而且在使用Eloquent进行增删改查的时候能自动更新这两个字段7创建个Model:'require|alpha_num|min:2','username'=>'require','email'=>'required|email|unique:users','password'=>'required|alpha_num|between:6,12|confirmed',];}这里必须要implementsUserInterface和RemindableInterface8把model和Auth关联上,修改app/config/auth.php'eloquent',//只有驱动为eloquent的时候才有用'model'=>'Badmin',);这里的driver可以是eloquent或者database,使用eloquent就告诉Auth组件说,用户认证类是Badmin这个类管的。这里的model是有命名空间的,就是说如果你的admin类是\Yejianfeng\Badmin,这里就应该改成‘\Yejianfeng\Badmin'9好了,这个时间其实逻辑部分已经搭建完毕了,你已经可以在controller种使用Auth::attempt(XXX)做权限认证Auth::user()获取登录用户(一个Badmin类)等。10下面要建立一个用户登录页面:11设置路由:'user.login','uses'=>'UserController@getLogin']);Route::get('user/login',['as'=>'login','uses'=>'UserController@getLogin']);Route::post('user/login',['as'=>'login','uses'=>'UserController@postLogin']);//需要登录验证才能操作的接口Route::group(array('before'=>'auth’),function(){Route::get(‘user/logout',['as'=>'logout','uses'=>'UserController@getLogout']);Route::get('user/dashboard',['as'=>'dashboard','uses'=>'UserController@getDashboard']);});12设置controller:Input::get('email’),'password'=>Input::get(‘password’)))){returnRedirect::to(‘user/dashboard’)->with(‘message',’成功登录‘);}else{returnRedirect::to('user/login’)->with(‘message',’用户名密码不正确‘)->withInput();}}//登出publicfunctiongetLogout(){Auth::logout();returnRedirect::to('user/login’);}publicfunctiongetDashboard(){returnView::make(‘user.dashboard’);}//添加新用户操作publicfunctiongetCreate(){returnView::make(‘user.create’);}//添加新用户操作publicfunctionpostCreate(){$validator=Validator::make(Input::all(),User::$rules);if($validator->passes()){$bAdmin=newBadmin();$bAdmin->nickname=Input::get(‘nickname’);$bAdmin->username=Input::get(‘username’);$bAdmin->email=Input::get(‘email’);$user->password=Hash::make(Input::get(‘password’));$user->save();Response::json(null);}else{Response::json(['message'=>‘注册失败'],410);}}}13设置下filter,app/filter.phpRoute::filter('auth',function(){if(Auth::guest()){if(Request::ajax()){returnResponse::make('Unauthorized',401);}else{returnRedirect::guest('/’);}}});将这里认证失败后的地址转到/路径14设置views/user/login.blade.php

㈨ 在PHP 领域里,有哪些 ORM 比较好用

首先有个纠结的前提: http://www.iteye.com/topic/319039#852063
在这个纠结的前提下,我认为 PHP 如果用 ORM,应该求简求轻。
有两个 PHP 的 ORM 我非常推荐:
Yii Framework 内置的 Active Record: http://www.yiiframework.com/doc/guide/1.1/en/database.ar
Laravel 内置的 Eloquent ORM: http://www.laravel.com/docs/database/eloquent
非常不推荐用这些:
Doctrine http://www.doctrine-project.org/

Propel http://www.propelorm.org/
尤其不推荐 Doctrine,整体是仿 Hibernate 的,但是放在 PHP 中用会非常可怕,成为应用的大负担。

参考:http://www.hu.com/question/20058218/answer/13834504

㈩ PHP框架 Laravel Eloquent ORM 批量插入数据,怎么实现

数据填充(也就是批量导入数据)不应该使用 Eloquent ORM , 而是用 Laravel 的 Artisan 命令行,使用起来也很简单。帮助文档里写的比较清楚了

参考: http://laravel.com/docs/4.2/migrations#database-seeding 最下面的 Database Seeding

阅读全文

与phpEloquent相关的资料

热点内容
android智能家居蓝牙 浏览:646
pt螺纹编程 浏览:451
手机电音app哪个好 浏览:749
checksum命令 浏览:637
java创建xml文件 浏览:170
算命源码国际版 浏览:283
三菱模块化编程 浏览:718
控件读取文件源码 浏览:445
文件夹侧面目录标签怎么制作 浏览:232
做程序员学什么 浏览:320
pdfeditor教程 浏览:880
fortran把文件放入文件夹 浏览:709
程序员1年经验不敢投简历 浏览:481
如何看电脑的源码 浏览:897
找工作app软件哪个好 浏览:96
信息管理网站源码 浏览:439
小说app哪个好免费 浏览:224
域名在线加密 浏览:146
软件编程西安交大 浏览:453
是不是串货的奶粉查不到溯源码的 浏览:825