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