分类 Laravel 下的文章

laravel Cookie使用

1、首先引入

use Illuminate\Support\Facades\Cookie;

2、写入数据

Cookie::queue('test','hello',20);    //队列
Cookie::make('test','hello',20);    //写入

3、获取数据,依赖于 Request,所以我们需要首先引入

use Symfony\Component\HttpFoundation\Request;

4、获取数据

$request->cookie('test');

5、清除cookie

Cookie::forget('test');

 

laravel Eloquent in 查询

whereIn 方法验证指定字段的值包含在指定的数组之内:

$users = DB::table('users')
                    ->whereIn('id', [1, 2, 3])
                    ->get();

whereNotIn 方法验证指定字段的值包含在指定的数组之内:

$users = DB::table('users')
                    ->whereNotIn('id', [1, 2, 3])
                    ->get();

 

laravel ftp 驱动上传文件

1、因为laravel默认filesystems文件是没有ftp配置的,所以我们先配置一下。

filePath: /config/filesystems.php

'ftp' => [
            'driver'   => 'ftp',
            'host'     => 'FTP地址',
            'username' => 'FTP 用户名',
            'password' => 'FTP密码',
            'port'     => 21,  //ftp端口
            'root'     => '/',  //ftp目录
        ],

2、在控制器进行上传操作

            $file = $request->file('img');   //img 是input 的name值

            //判断文件是否上传成功
            if ($file->isValid()) {

                //原文件名称
                $originName = $file->getClientOriginalName();

                //文件扩展名
                $ext = $file->getClientOriginalExtension();

                //文件类型
                $type = $file->getClientMimeType();

                //临时绝对路径
                $realPath = $file->getRealPath();

                //存储文件名
                $filenName = date("Y-m-d").'-'.uniqid().'.'.$ext;

                //执行上传文件
                $bool = Storage::disk('ftp')->put($filenName,file_get_contents($realPath));

            }

 

laravel ORM 遍历一对一关联数据

laravel中两个表做数据关联,这里是一个实际例子,一个产品表products,一个产品视频介绍二维码表pqrcodes,两个表中数据一对一关系,在产品详细信息展示页面想将产品的二维码信息同时展示出来,比如二维码过期时间等,这样就需要对两个表进行数据关联。

Product模型


namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{

   protected $table='products';
   //关联Pqrcode表
   public function pqrcode(){
       //id是pqrcodes的主键,qid是products中pqrcodes的外键
       return $this->hasOne('App\Pqrcode','id','qid');
   }
}

Pqrcode模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Pqrcode extends Model
{
    protected $table = 'pqrcodes';
}

控制器中调用

$products = Product::with('pqrcode')->where('uid','=',Auth::user()->id)->get();

我采用的是预加载方法with(),这样可以加快速度。

将$products变量注册到前端页面

return view('home.member.index')->with('products',$products);

前端页面中调用关联表中的数据

@foreach($products as $item)
<tr>
    <td>{{$item['id']}}</td>
    <td>{{$item['name']}}</td>
    <td>状态</td>
    <td>{{$item['pqrcode']['expired_at']}}</td>
    <td><button class="btn btn-primary show-qrcode" id="show-qrcode-{{$item['id']}}">查看二维码</button></td>
</tr>
@endforeach

 

laravel 中间件添加、注册、使用

添加:

在app/Http/Middleware/下面新增中间件例如:app/Http/Middleware/Huodong.php

namespace App\Http\Middleware;

use Closure;

class Huodong
{

    //handle 是固定方法。
    public function handle($request,Closure $next)
    {
       if (time() < strtotime('2017-06-28')) {
            return redirect('member/huodong');
       }
       return $next($request);

       //$next 后面执行的逻辑 叫后置操作。
    }


}

中间件注册

app/Http/Kernel.php

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'huodong'  => \App\Http\Middleware\Huodong::class,   //这个是新增
    ];
}

中间件使用,在路由中增加

Route::get('member/huodong',['uses' => '[email protected]']);

//这个是中间件
Route::group(['middleware' => ['huodong']],function(){
    Route::get('member/huodong1',['uses' => '[email protected]']);
});

 

laravel 输出json以及重定向

$data = ['name'=>'xiaobai','age'=>18,'sex'=>'男'];
        //返回json类型数据
        return response()->json($data);


        //重定向,页面跳转
        //传入网址跳转
        return redirect('muban');

        //带参数跳转
        return redirect('muban')->with('message','这里是数据');

        //跳转到指定方法里面
        return redirect()->action('[email protected]');
        //跳转到指定别名
        return redirect()->route('session1')->with('message','这里是数据');
        //返回来源页
        return redirect()->back();

 

Laravel session

//1.http request session
        $request->session()->put('key1','value1');
        $request->session()->get('key1');

        //2.session()帮助函数
        session()->put('key2','value2');
        session()->get('key2');

        //3.session 需要引入use Illuminate\Support\Facades\Session;
        Session::put('key3','value3');
        //如果key3不存在则返回default
        echo Session::get('key3','default');
        //以数组的形式存数据
        Session::put(['key4'    =>  'value4']);

        //存入数组

        Session::push('name','xiaobai');
        $res = Session::get('name');
        //取出数据后删除该条数据
       $res = Session::pull('age',18);
        //取出所有记录
        $res = Session::all();
        //判断key是否存在
        if (Session::has('key1')) {
            echo '存在';
        }else{
            echo '不存在';
        }
        //删除指定key
        Session::forget('key1');
        //清空session
        Session::flush();
        //暂存数据  存储后,只要访问一次就会自动销毁
        Session::flash('num','2');

 

laravel 控制器之Request

在使用Request之前首先需要在控制器引入

use Symfony\Component\HttpFoundation\Request;

控制器:

//取值
        echo $request->input('name');
        echo $request->input('sex','数据不存在');

        if ($request->has('sex')) {
            echo $request->input('sex');
        }else{
            echo '没有这个参数';
        }
        //获取全部数据
        $res = $request->all();


        //请求类型
        echo $request->method();

        //判断请求类型
        if ($request->isMethod('post')) {
            echo 'yes';
        }else{
            echo 'no';
        }
        //判断请求类型是否为ajax
        $res = $request->ajax();
        var_dump($res);
        //判断请求路径是否符合指定规则
        $res = $request->is('member/*');
        var_dump($res);

 

Laravel 模板之流程控制

控制器:

public function test ()
    {
        $data = ['name' =>  'xiaobai','age' =>  29];
        $name = 'xiaobai';
        $list = Student::get();
        return view('test.demo',[
            'info'    =>  $data,
            'name'    =>  $name,
            'list'    =>  $list
        ]);
    }

视图:

{{--流程控制--}}
    @if ($name == 'xiaobai')
        yes
    @elseif ($name == 'xiaohei')
        xiaohei
    @else
        default
    @endif

    <br>
    @if (in_array($name,$info))
        yes
    @else
        no
    @endif

    <br>
    {{--跟if 相反,比如下面这个判断,如果是if那么是成立的,但是unless则相反--}}
    @unless($name == 'xiaobai')
        yes
    @endunless

    <br>
    @for($i=0;$i<3;$i++)
        <p>{{$i}}</p>
    @endfor

    <br>
    @foreach($list as $v)
        <p>{{$v->name}}</p>
    @endforeach

    @forelse($list as $v)
        <p>{{$v->name}}</p>
    @empty
        <p>如果$list为空的话则显示这里</p>
    @endforelse