laravel学习

调试页面隐藏环境变量,可以通过设置 config/app.php 配置文件中的 debug_blacklist 选项来完成这个操作。

'debug_blacklist' => [
        '_ENV' => [
            'APP_KEY',
            'DB_PASSWORD',
        ],

        '_SERVER' => [
            'APP_KEY',
            'DB_PASSWORD',
        ],

        '_POST' => [
            'password',
        ],
    ],

访问配置值
可以轻松地在应用程序的任何位置使用全局 config 函数来访问配置值

$value = config('app.timezone');
config(['app.timezone' => 'America/Chicago']);

配置缓存

php artisan config:cache

维护模式

php artisan up
php artisan down
php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16

数据库

use Illuminate\Support\Facades\DB;
$users = DB::connection('foo')->select(...);
$users = DB::connection('foo')->insert(...);
$users = DB::connection('foo')->update(...);
$users = DB::connection('foo')->delete(...);
DB::statement(...);
DB::transaction(function(){},5);
DB::beginTransation();
DB::rollBack();
DB::commit();

任务调度

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

		$schedule->call(function () {
            DB::table('recent_users')->delete();
        })->daily();
        $schedule->call(function () {
		    //
		})->weekly()->mondays()->at('13:00');
		

自定义了一个类,为了方便在其他别处使用,便可以使用服务提供者和门面。

namespace App\Helper;
class MyFoo{
    public function add($a, $b)
    {
        return $a+$b;
    }
}

namespace App\Providers;

use App\Helper\MyFoo; //要服务的Containeruse Illuminate\Support\ServiceProvider;
use App;

class MyFooServiceProvider extends ServiceProvider{
    public function boot(){}
    //注册到容器中
    public function register()
    {
        //可以这么绑定,这需要use App;
        App::bind("myfoo",function(){
            return new MyFoo();
        });
        //也可以这么绑定
        $this->app->bind("myfoo", function(){
            return new MyFoo();
        });
    }
}

namespace App\Facades;
use Illuminate\Support\Facades\Facade;

class MyFooFacade extends Facade{
    protected static function getFacadeAccessor()
    {
        //这里返回的是ServiceProvider中注册时,定义的字符串
        return 'myfoo';
    }
}




config/app.php中,在aliases中加入

'MyFoo'   => App\Facades\MyFooFacade::class,


use App\Facades\MyFooFacade;
public function two($id=null){
    //从系统容器中获取实例化对象
    $myfoo = App::make("myfoo");
    echo $myfoo->add(1,2);
    //使用门面
    echo MyFooFacade::add(4,5);
    //别名
    echo MyFoo::add(4,5);
}
1.  $request->session()->put('key','value');//设置session
    $request->session()->get('key');//获取session的值
 
 
2.    Session::put('key','value');
      Session::get('key');
 
       //删除session中的指定值
       Session::forget('key');
       //清空所有session
       Session::flush();
3.  session()->get('key');
    session()->put('key','value');

请注意,我们并没有告诉 Eloquent,Flight 模型该使用哪一个数据表。除非数据表明确地指定了其它名称,否则将使用类的复数形式「蛇形命名」来作为表名。因此,在这种情况下,Eloquent 会假定 Flight 模型存储的是 flights 数据表中的记录。你可以通过在模型上定义 table 属性,来指定自定义数据表:

Eloquent 也会假定每个数据表都有一个名为 id 的主键字段。你可以定义一个受保护的 $primaryKey 属性来覆盖这个约定。

另外,Eloquent 假定主键是一个递增的整数值,这意味着在默认情况下主键会自动转换为 int。 如果使用的是非递增或者非数字的主键,则必须在模型上设置 public $incrementing = false。如果主键不是一个整数,则应该在模型上设置 protected $keyType = ‘string’。

默认情况下,Eloquent 会默认数据表中存在 created_at 和 updated_at 这两个字段。如果你不需要这两个字段,则需要在模型内将 $timestamps 属性设置为 false:

Gates 提供了一个简单的、基于闭包的方式来授权认证。策略则和控制器类似,在特定的模型或者资源中通过分组来实现授权认证的逻辑。
Gates 大部分应用在模型和资源无关的地方,比如查看管理员的面板。与之相反,策略应该用在特定的模型或者资源中。
这两种形式的区别在于,授权逻辑是写在闭包里,还是 PHP 类方法里。闭包或方法最终都返回一个布尔值,true 表示有权限,false 表示没权限

优化后的执行计划使用了索引查找,将大幅提升该查询语句的性能,降低了锁定资源的时间,同时也减少了锁定资源的范围,这样就降低了锁资源循环等待事件发生的概率,对于预防死锁的发生会有一定的作用。

死锁是无法完全避免的,但如果应用程序适当处理死锁,对涉及的任何用户及系统其余部分的影响可降至最低(适当处理是指发生错误1205时,应用程序重新提交批处理,第二次尝试大多能成功。一个进程被杀死,它的事务被取消,它的锁被释放,死锁中涉及到的另一个进程就可以完成它的工作并释放锁,所以就不具备产生另一个死锁的条件了。)

mongodb 聚合

$cityId = 1;//城市ID

$count = UserModel::query()->raw(function ($collection) use ($cityId) {

    $aggregate = [];

    $aggregate[]['$match'] = [

        'city_id' => intval($city_id),//过滤城市

        'sex' => ['$in' => [1,2]],//过滤性别

    ];

    $aggregate[]['$group'] = [

        '_id' => '$sex',//更具性别进行分组

        'avg_age' => [

            '$avg' => '$age',//查询年龄平均值

        ]

    ];

    //这里还可以继续添加各种条件

    return $collection->aggregate($aggregate)->toArray();

});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值