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);
});
}