laravel常见小问题

一、数据填充

  • 定义模型Post.php
  • 定义工厂database/factories/PostFactory.php
$factory->define(Post::class, function (Faker $faker) {

   return [
       'title' => $faker->sentence(6, true),
       'content' => $faker->text(500),
       'user_id' => function() {
           return factory(\App\User::class)->create()->id;
      }             
   ];

});
  • 控制好生成的数据,在database/seeds/XxxTableSeeder.php 中生成后的数据进行修改,也可以直接在thinker命令行下运行factory(App\Post::class,20)->create(); 填充数据保存在数据库
  • 运行 php atrisan db:seed(运行填充器)--

二、中文错误提示

  • 下载扩展包 composer require "overtrue/laravel-lang:~3.0"
  • 在config/app.php中将 Illuminate\Translation\TranslationServiceProvider::class 替换为Overtrue\LaravelLang\TranslationServiceProvider::class
  • 在config/app.php中设置 'locale' => 'zh-CN'
  • 详见 https://github.com/overtrue/laravel-lang#install

三、Scout +ES完成搜索功能

  • 首先,通过 Composer 包管理器来安装 Scout:

    1 下载scout: composer require laravel/scout 
    2 发布scout: php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
    
  • 在config/app.php中添加Laravel\Scout\ScoutServiceProvider::class,

  • 最后,在你要做搜索的模型中添加 Laravel\Scout\Searchable trait。这个 trait 会注册一个模型观察者来保持模型和所有驱动的同步:

    <?php
    namespace App;
    use Laravel\Scout\Searchable;
    use Illuminate\Database\Eloquent\Model;
    
    class Post extends Model
    {
        use Searchable;
    }

四、向公共模板传值(view composer)

有时候我们想要在每次视图渲染时绑定一些特定数据到视图中,比如登录用户信息,这时候我们就要用到视图Composer,视图Composer通过视图工厂的composer方法实现。该方法的第二个回调参数支持基于控制器动作和闭包函数两种方式。
简单起见,我们还是基于AppServiceProvider,不去单独创建服务提供者,这里我们传递闭包参数(控制器动作参考视图文档):

public function boot()
{
    \View::composer('layout.nav', function($view){
        $user = \Auth::user();
        $view->with('user', $user);
    });

    \View::composer('layout.sidebar', function($view){
        $topics = \App\Topic::all();
        $view->with('topics', $topics);
    });        
}
全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务