如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
公共专题列表
视图合成器
\View::composer('mobandizhi',function($view){
//加载
})
使用
位置\app\Providers\AppServiceProvider.php
public function boot()
{
\View::composer('layout.sidebar',function($view){
$topics = \App\Topic::all();
$view->with('topics',$topics);
})
}
view
@foreach($topics as $topic)
{{$topics->id}}
@endforeach
scope 属于/不属于
定义
//scope+名
//必须返回$query
public function scopeActiveee($query){
return $query->where('active',1);
}
使用
$users = App\User::popular()->activeee()->orderBy('created_at')->get();
demo
属于某个作者的文章(post.php)
public function scopeAuthorBy(Builder $query,$user_id){
return $query->where('user_id',$user_id);
}
不在某个topic中的文章(post.php)
//获取专题中的文章
public function postTopics(){
return $this->hasMany(\App\PostTopic::class,'post_id','id');
}
public function scopeTopicNotBy(Build $query,$topic_id){
return $query->doesntHave('postTopics','and',function($q) use($topic_id){
$q->where('topic_id',$topic_id);
});
}
专题
//专题的文章
public function posts(){
表 这个表的外键 当前的键
$this->belongsToMany(\App\Post::class,'post_topics','topic_id','post_id');
}
//专题的文章数
public function postTopics(){
$this->hasMany(\App\PostTopic::class,topic_id); //id可不用写
}
控制器/模板
public function show(Topic $topic){
//带文章的专题
$topic = Topic::withCount('postTopics')->find($topic->id);
//专题的文章列表,,,按创建时间前十条
$posts = $topic->posts()->orderBy('create_at','desc')->take(10)->get();
//属于我的文章,未投稿
$myposts = \App\Post::authorBy(\Auth::id())->topicNotBy($topic->id)->get();
}
后台搭建
psr4规定了命名方式
把前后端的路由分开
web.php 中引入include_once('admin.php'); 同目录创建admin.php
Route::group(['prefix'=>admin],function(){
<!-- 测试 -->
Route::get('/ceshi',function(){
return 111;
});
})
\resources\views\admin
\app\Admin\Controllers
后台页面模板
https://github.com/almasaeed2010/AdminLTE
composer require "almasaeed2010/adminlte=~2.0"
view
return view('admin.login.index')
人员验证
config/auth.php
//定义providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'amdins'=>[
'driver' => 'eloquent',
'model' => App\AdminUser::class,
],
],
//定义guards
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' =>[
'driver' => 'session',
'provider' => 'admins',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
AdminUser.php
use App\Model
use Illuminate\Foundation\Auth\User as Authenticatable;
class AdminUser extends Authenticatable{ }
路由
Route::group(['prefix' => 'admin'], function() {
Route::get('/login', '\App\Admin\Controllers\LoginController@index');
// 需要登陆的 auth.php文件的admin
Route::group(['middleware' => 'auth:admin'], function(){
Route::get('/home', '\App\Admin\Controllers\HomeController@index');
})
})
修改表
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->tinyInteger('status')->default(0); //文章状态 0 未知/1 通过/ -1 删除
});
}
public function down()
{
Schema::table('posts', function (Blueprint $table) {
$table->dropColumn('status'); //文章状态 0 未知/1 通过/ -1 删除
});
}
王明昌博客
