我的Eloquent单独使用系列文章
php的db类库Eloquent单独使用系列(1)
php的db类库Eloquent单独使用系列(2) - 分页
php的db类库Eloquent单独使用系列(3) - sql日志
php的db类库Eloquent单独使用系列(4)- 事件监听
php的db类库Eloquent单独使用系列(5)- 模型转数组
php的db类库Eloquent单独使用系列(6)- 一对一关联
php的db类库Eloquent单独使用系列(7)- 一对多关联
php的db类库Eloquent单独使用系列(8)- 多对多关联
php的db类库Eloquent单独使用系列(9)- 多对多关联 - 表关联自身
php的db类库Eloquent单独使用系列(10)- 多对多关联 - 远程一对多
php的db类库Eloquent单独使用系列(11)- 多对多关联 - 添加模型属性
php的db类库Eloquent单独使用系列(12)- 结果集模型转数组 - 2
安装同前,就不说了。
本文的目的是单独使用eloquent,脱离laravel环境使用,要求能打印sql日志。不想用laravel,但又想用eloquent。
下面的代码假定使用了一个表test2。
主要是3个文件,名字都可以自己改。路径也可以自己改,只要改namespace即可。
1)User是模型文件,里面啥都没有。
2)程序主文件。Ill.php
3)监听事件文件。SqlListener
模型文件User.php
<?php
namespace app\model;
class User extends \Illuminate\Database\Eloquent\Model
{
protected $table = 'test2';
public $timestamps = false;
}
监听文件 SqlListener.php
<?php
namespace app\model;
class SqlListener implements \Illuminate\Contracts\Events\Dispatcher
{
/**
* Dispatch an event and call the listeners.
*
* 注意:就改这个函数。也可以记录到文件日志里。
*
* @param string|object $event
* @param mixed $payload
* @param bool $halt
* @return array|null
*/
public function dispatch($event, $payload = [], $halt = false)
{
if ($event instanceof \Illuminate\Database\Events\QueryExecuted) {
$sql=$event->sql;
if ($event->bindings) {
foreach($event->bindings as $v) {
$sql = preg_replace('/\\?/', "'". addslashes( $v)."'", $sql,1);
}
}
echo $sql."<br>";
}
}
public function listen($events, $listener){}
public function hasListeners($eventName){}
public function subscribe($subscriber){}
public function until($event, $payload = []){}
public function push($event, $payload = []){}
public function flush($event){}
public function forget($event){}
public function forgetPushed(){}
}
程序主文件,能够记录执行的sql代码,调试时真的很有实用价值!
<?php
namespace app\control;
use \Illuminate\Database\Capsule\Manager as Capsule;
use app\model\User;
class Ill
{
public function logdemo()
{
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'test1',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
//设置sql日志监听
$capsule->setEventDispatcher(new \app\model\SqlListener() );
//下面是两种不同类型的sql操作,第一种是db门面,第2种使用了orm。
$users = $capsule::select('SELECT * FROM test2 limit 1');
$user = User::find(1);
}
}
下面是浏览器显示效果。
SELECT * FROM test2 limit 1
select * from `test2` where `test2`.`id` = '1' limit 1
分享到:
相关推荐
Laravel开发-eloquent-extended-cast-model .zip
Laravel开发-eloquent-single-state-marking-store 一个雄辩的支持,单一状态标记存储symfony的工作流程。
Laravel开发-eloquent-uuid-for-key 用于Laravel雄辩的Uuid4键
Laravel开发-eloquent-log-lazy-loading 记录(或禁用)雄辩的延迟加载关系。
Laravel开发-eloquent-single-table-inheritance 单表继承(Sti)作为Laravel雄辩模型的特征实现
Laravel开发-eloquent-extended-cast-model 这个库帮助您制作更高级的演员表到雄辩的模型。
ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。 ROS Graph这里翻译成了ROS网络,因为我觉得...
应用使用邮递员,失眠等用法$ git clone https://github.com/DanielArturoAlejoAlvarez/Eloquent-Relations-Laravel-7-and-MySQL[NAME APP]$ composer install$ copy .env.example .env$ php artisan key:generate$ ...
Laravel开发-eloquent-state-machine 雄辩状态机
Laravel开发-eloquent-model-generator 自动从Laravel5项目中的数据库生成所有雄辩的模型。
$ git clone https://github.com/DanielArturoAlejoAlvarez/Eloquent-ORM-Laravel-8.5-Relationships-Advanced[NAME APP] $ composer install $ copy .env.example .env $ php artisan key:generate $ php artisan ...
Laravel开发-eloquent-mongodb-repository 雄辩的MongoDB存储库实现
composer require mpyw/eloquent-has-by-non-dependent-subquery 动机 假设您具有以下关系: class Post extends Model { use SoftDeletes ; public function comments (): HasMany { return $ this -> has...
Laracasts advanced-eloquent 视频课程全集-----下载
要求ROS口才: : 科尔康: sudo apt install python3-colcon-common-extensions ROS2软件包: sudo apt install ros-eloquent-rviz2 ros-eloquent-urdf ros-eloquent-xacro ros-eloquent-robot-state-publisher ros-...
一本关于JavaScript,编程和数字奇迹的书。
composer require krlove/eloquent-model-generator --dev 步骤2.注册GeneratorServiceProvider : 'providers' => [ // ... Krlove \ EloquentModelGenerator \ Provider \ GeneratorServiceProvider ::class, ...
Laravel开发-eloquent-search-map 轻松搜索模型的雄辩搜索宏
Laravel开发-eloquent-postgres-uuids 有助于在Postgres数据库中使用UUID作为主键的大型雄辩特征。
Laravel开发-eloquent-base-model 雄辩的基模型是雄辩的ORM继承模型。