05_controller - hpscript/laravel GitHub Wiki

https://readouble.com/laravel/5.8/ja/controllers.html

コントローラーの作成

$ php artisan make:controller PostsController

※ --resouceとすると、index(), function create(), store(Request $request), show($id), edit($id), update(Request $request, $id), destory($id)ができる $ php artisan make:controller --resource PostsController

class PostsController extends Controller
{
    //
    public function index(){
    	return "hello";
    }
}

viewを指定するとき

class PostsController extends Controller
{
    //
    public function index(){
    	return view('posts.index');
    }
}

データの取得

dd(${table}->toArray())でデータを確認できる

namespace App\Http\Controllers;
use App\Post;

use Illuminate\Http\Request;

class PostsController extends Controller
{
    //
    public function index(){
    	$posts = Post::all();
    	dd($posts->toArray()) //ddはdumpとdieの略
    	return view('posts.index');
    }
}

新しい順

$posts = Post::orderBy('created_at', 'desc')->get();
$posts = Post::latest()->get();

viewへのデータ引き渡し

第二引数で渡す

public function index(){
    	$posts = Post::latest()->get();
    	return view('posts.index', ['posts'=>$posts]);
    }

withを使った書き方

public function index(){
    	$posts = Post::latest()->get();
    	return view('posts.index')->with('posts', $posts);
    }

routingからのデータ引き渡し

public function show($id){
    	// $posts = Post::latest()->get();
    	$post = Post::findOrFail($id);
    	return view('posts.show')->with('post', $post);
    }

implicit binding

controllerから渡ってきたidを指定する

public function show(Post $post){
    	// $posts = Post::latest()->get();
    	// $post = Post::findOrFail($id);
    	return view('posts.show')->with('post', $post);
    }

formからのpost

渡ってきた値をRequest $requestと書く

public function store(Request $request){
    	$post = new Post();
    	$post->title = $request->title;
    	$post->body = $request->body;
    	$post->save();
    	return redirect('/');
    }

validation

requestに対し、validationを設定する

public function store(Request $request){
    	$this->validate($request, [
    		'title' => 'required|min:3',
    		'body' => 'required',
    	]);
    	$post = new Post();
    	$post->title = $request->title;
    	$post->body = $request->body;
    	$post->save();
    	return redirect('/');
    }

update

formからのrequestとPostのid

public function update(Request $request, Post $post){
    	$this->validate($request, [
    		'title' => 'required|min:3',
    		'body' => 'required',
    	]);
    	$post->title = $request->title;
    	$post->body = $request->body;
    	$post->save();
    	return redirect('/');
    }

delete

public function destroy(Post $post){
    	$post->delete();
    	return redirect('/');
    }

今日以降取得

$dt = Carbon::yesterday();
        $works = Work::where('user_id', '1')->where('status_id', '1')->whereDate('remote_at', '>', $dt)->orderBy('remote_at', 'asc')->get();