博客列表 >laravel 数据库连接、查询构造器和模型

laravel 数据库连接、查询构造器和模型

初见
初见原创
2021年11月19日 14:05:52958浏览

数据库

  • 连接到数据库 CLI
  1. //进入 Homestead目录
  2. vagrant up //启动homestead虚拟机
  3. vagrant ssh //进入虚拟机
  4. cd code //进入项目
  5. php artisan db //链接mysql
  6. show databases; //查看数据库
  7. exit; //退出数据库
  • 数据表创建
  1. //快捷键
  2. Linux命令行下如何终止当前程序快捷键: Ctrl+c
  3. phpstorm 自动加入类 alt + enter +enter
  4. php artisan migrate //运行迁移
  5. php artisan make:migration create_goods_table //创建一个新的表
  6. $table->id();
  7. $table->integer('user_id')->comment('创建者');
  8. $table->integer('category_id')->comment('分类');
  9. $table->string('title')->comment('标题');
  10. $table->string('description')->comment('描述');
  11. $table->integer('price')->comment('价格');
  12. $table->integer('stock')->comment('库存');
  13. $table->integer('sales')->default(0)->comment('销量');
  14. $table->string('cover')->comment('封面图');
  15. $table->json('pics')->nullable()->comment('小图集');
  16. $table->tinyInteger('is_on')->default(0)->comment('是否上架 0不上架 1上架');
  17. $table->tinyInteger('is_recommend')->default(0)->comment('是否推荐 0不推荐 1推荐');
  18. $table->text('details')->comment('详情');
  19. $table->timestamps();
  20. $table->softDeletes();
  21. $table->index('category_id');
  22. $table->index('title');
  23. $table->index('is_on');
  24. $table->index('is_recommend');
  25. php artisan make:migration add_hot_to_goods //添加字段
  26. $table->tinyInteger('hot')->default(0)->comment('是否热门');
  27. php artisan migrate:rollback //回滚迁移

查询构造器

  1. //资源路由
  2. Route::resource('/goods',GoodsController::class);
  3. //GoodsController
  4. $goods= DB::select('SELECT * FROM goods');
  5. $goods= DB::select('SELECT * FROM goods WHERE `id`=?',[1]);// 不常用
  6. $goods= DB::table('goods')->get(); //获取多条
  7. $goods= DB::table('goods')->first(); //获取单条
  8. //where 条件
  9. $goods= DB::table('goods')->where('id',1)->first();
  10. //只要商品的名称
  11. $goods= DB::table('goods')->where('id',1)->value('title');
  12. //取一列
  13. $goods= DB::table('goods')->pluck('title');
  14. $goods= DB::table('goods')->where('id',1)->first();
  15. dd($goods->title);
  16. $good= DB::table('goods')->find($id);
  17. $goods= DB::table('goods')->count();
  18. $goods= DB::table('goods')
  19. ->select('title','user_id as uid')
  20. ->get();
  21. //where
  22. $goods= DB::table('goods')
  23. ->where('price','>',100)
  24. ->get();
  25. $goods= DB::table('goods')
  26. ->where([
  27. ['price','>',100],
  28. ['stock','>',10],
  29. ])
  30. ->get();
  31. //orwhere
  32. $goods= DB::table('goods')
  33. ->where([
  34. ['price','>',100],
  35. ])
  36. ->orWhere('stock','>',10)
  37. ->get();
  38. //insert
  39. $result= DB::table('goods')->insert(
  40. [
  41. 'user_id'=>1,
  42. 'category_id'=>1,
  43. 'title'=>'小米8 pro',
  44. 'description'=>'小米',
  45. 'price'=>1499,
  46. 'stock'=>99,
  47. 'sales'=>1,
  48. 'cover'=>'0',
  49. 'pics'=>'0',
  50. 'is_on'=>0,
  51. 'is_recommend'=>0,
  52. 'details'=>'0'
  53. ]
  54. );
  55. insertGetid //获取id
  56. // update
  57. $result=DB::table('goods')->where('id',1)->update(
  58. [
  59. 'price'=>6888,
  60. 'stock'=>998
  61. ]
  62. );
  63. //调试 dd结束运行,dump不结束运行
  64. DB::table('goods')->where('id',1)->dump();
  65. $data= $request->except('_token');
  66. $result= DB::table('goods')->insertGetid($data);
  67. dd($result);
  1. // create.blade.php
  2. <x-layout>
  3. <x-slot name="title">商品添加</x-slot>
  4. <div>
  5. <form method="post" action="{{route('goods.store')}}" enctype="multipart/form-data" >
  6. @csrf
  7. {{-- <input type="file" name="photo">--}}
  8. <div class="form-group">
  9. <span>标题</span>
  10. <input type="text" name="title">
  11. </div>
  12. <div class="form-group">
  13. <span>user_id</span>
  14. <input type="text" name="user_id">
  15. </div>
  16. <div class="form-group">
  17. <span>category_id</span>
  18. <input type="text" name="category_id">
  19. </div>
  20. <div class="form-group">
  21. <span>description</span>
  22. <input type="text" name="description">
  23. </div>
  24. <div class="form-group">
  25. <span>price</span>
  26. <input type="text" name="price">
  27. </div>
  28. <div class="form-group">
  29. <span>stock</span>
  30. <input type="text" name="stock">
  31. </div>
  32. <div class="form-group">
  33. <span>sales</span>
  34. <input type="text" name="sales">
  35. </div>
  36. <div class="form-group">
  37. <span>cover</span>
  38. <input type="text" name="cover">
  39. </div>
  40. <div class="form-group">
  41. <span>is_on</span>
  42. <input type="text" name="is_on">
  43. </div>
  44. <div class="form-group">
  45. <span>is_recommend</span>
  46. <input type="text" name="is_recommend">
  47. </div>
  48. <div class="form-group">
  49. <span>details</span>
  50. <input type="text" name="details">
  51. </div>
  52. <div class="form-group">
  53. <input type="submit">
  54. </div>
  55. </form>
  56. </div>
  57. </x-layout>

模型

  1. php artisan make:model Good //生成model
  2. //引入use App\Models\Good;
  3. $data=Good::get();
  4. $data=Good::find(1);
  5. dd($data->title);
  6. $data=Good::count();
  7. //Good
  8. protected $table='goods';// 对应可以省略
  9. protected $fillable = [
  10. 'title',
  11. 'user_id',
  12. 'category_id',
  13. 'description',
  14. 'price',
  15. 'stock',
  16. 'cover',
  17. 'is_on',
  18. 'is_recommend',
  19. 'details',
  20. ];
  21. $result= Good::create($request->all());
  22. dd($result);
  23. //修改
  24. $good=Good::find(6);
  25. $good->title='我是第6条';
  26. $good->save();
  27. dd($good);

请求

  1. //获取所有值
  2. dd($request->all());
  3. //获取单个值
  4. $a= $request->input('a');
  5. dd($a);
  6. $request->path();
  7. $request->ip();
  8. $request->method();
  9. $title = $request->input('title','default');
  10. $title = $request->only(['title','hot']);
  11. $title = $request->except('hot');
  12. if($request->has(['title','hot'])){
  13. }
  14. // 图片上传
  15. enctype="multipart/form-data"
  16. <input type="file" name="photo">
  17. $file=$request->photo->store('images');
  18. php artisan storage:link
  19. 'links' => [
  20. public_path('storage') => storage_path('app/public'),
  21. public_path('images') => storage_path('app/images'),
  22. ],

  • 解决方案
    首先先把你已经开启的 homestead 虚拟机关闭掉,关闭语句

vagrant halt

我的系统是 Windows 10 。找到系统里的 cmd.exe 文件,文件路径

C:\Windows\System32\cmd.exe

鼠标右键点击“以管理员身份运行”。
进入 Homestead 目录
我的目录是 “C:\Users\mm\Homestead\”。

执行

  1. vagrant up # 启动虚拟机
  2. vagrant ssh # 进入虚拟机

最后进入对应的项目目录再执行

php artisan storage:link

图片上传保存数据

  1. // GoodsController
  2. public function store(Request $request)
  3. {
  4. $file=$request->photo->store('images');
  5. $img=['cover'=>$file];
  6. $data=$request->all();
  7. //把图片压入提交的其他数据的数组中
  8. $dataAll= array_merge($img,$data);
  9. $result= Good::create($dataAll);
  10. dd($result,$file);
  11. }


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议