📘
【Laravel】Controller・View間における変数の受け渡し
基本事項
・基本的にルーティング(web.phpなど)で変数の宣言や値の計算などをすることはない
・あくまでもルーティングはコントローラーを呼び出すのみ
Controller→View
SampleController
public function sampleFunc()
{
$name = "太郎";
$age = 24;
$message = "よろしく";
return view('trouble.test', compact("name", "age", "message"));
}
sample.blade
<p>このメッセージが見えたらルーティングは正常です。</p>
<br>
<p>{{$name}}</p>
<br>
<p>{{$age}}</p>
<br>
<p>{{$message}}</p>
<br>
web.php
/**
* サンプル画面
* 値を渡すテスト
*/
Route::get('/test/sample', [SampleController::class, 'sampleFunc']);
Model → Controller
マイグレーションファイルでテーブルを作成
マイグレーション
class CreateTestsDetailTable extends Migration
{
~中略~
public function up()
{
// テーブル名に合わせるようにする
Schema::create('tests_detail', function (Blueprint $table) {
// カラム設定
$table->id();
$table->String('content', 4000);
$table->timestamps();
});
}
~中略~
}
上記で作成したテーブルを操作できるモデルクラスを作成
テストモデル
class TestsDetail extends Model
{
use HasFactory;
protected $table = 'test_detail';
}
Controller側で上記のモデルを介してDBから値を持ってくる
TestController.php
public function dbTestSelect()
{
//dbtest_tableの全データを取得
$db_data = \App\Models\TestsDetail::all();
return view('<View名>', compact('db_data'));
}
web.php
/**
* データベーステスト画面
* データベースから値を抜いて画面に出すテスト
*/
Route::get('<画面側で指定するURL>', [TestController::class, 'dbTestSelect']);
Discussion