Laravel 学習メモ - 記事の追加、削除、変更、確認の簡単な例
これは、laravel を実際にいじる方法の最初の簡単な例です。このサンプルは非常に単純ですが、その過程で多くの問題が発生しました。サンプル全体の機能を実現するには、多くの修正と継続的なデバッグが必要でした。私はプログラミングの初心者なので、常に心配する必要があります。プログラミングの過程で多くの論理的な問題に遭遇しますが、それらを解決するときに本当に頭を悩ませ、その理由さえ思いつかないことがあります。同じ学習プロセス中に?
さて、以下は私の学習過程の記録です。
1. Laravel の ORM モデルを使用してデータベース内のデータを操作しているため、最初にデータベースとテーブルを作成する必要があります - > ; ウェブ、テーブル -> 例として。
(1) navicai を使用してデータベースにリンクし、データベース Web とテーブルの投稿を作成します
(2) テーブルのデータ フィールドを入力し、入力しますテスト目的で気軽に。
(3) データベースが作成されたら、次のステップは ORM モデル ファイルを作成することです:
use IlluminateDatabaseEloquentModel;
上記パス下の Mode クラスは、Post クラスが Model クラスの属性を継承するために使用されます。
public $table = 'posts';
データベーステーブルはpostsとして定義されます
public $primarykey = 'id';
テーブルの主キーを id として定義します
public $timestamps = false;
timestamp を false に設定します。ここでは、システムが createtime_at 関数と updatetime_at 関数を自動的に使用できないようにすることを意味します。
protected $dateFormat = 'U' ;
時刻形式を次のように設定します。 UNIX 時刻形式
protected $fillable = ['title', 'content','id'];
ここでは特に注意が必要です。ここでは、ホワイトリスト コンテンツが設定されています。この変数の内容が設定されていない場合、その後のデータの編集と変更は失敗します。これは、このプログラムを作成する過程で遭遇したさらに注目すべき点です。
2. ORM モデルを作成した後、必要に応じて記事のアクセス ルートを構築し、記事へのアクセスを成功させ、対応するビューにマッピングできます。
(1) インデックス、表示、保存、編集、削除に対応するルーティング テーブル エントリを作成します。 ルート ファイルの内容は次のとおりです。
PostController@index などのコントローラー アクションは、コントローラー PostController で定義されたメソッドであり、記事のさまざまな関数の実装呼び出しを実装します。
3. PostController コントローラーの定義方法
(1) PostController は、Post モデルと同様に、対応する親クラス、つまり、対応するパス下のコントローラー コントローラーを継承する必要があります。
class PostController extends Controller
(2) インデックス表示リストのメソッドを定義
( 3) $posts モデル インスタンスを定義します。各モデル インスタンスはクエリであるため、orderby() クエリが呼び出され、posts テーブルのすべての内容が id フィールドに従って昇順で表示されます。
$posts = Post::orderBy('id', 'asc')->get();
(4) post ディレクトリ内の指定されたビュー テンプレート:index.blade.php を返し、$posts のクエリ内容を post 配列に渡します。
return view('post.index', [ 'posts ' => $posts]);
(5) 各記事の内容を表示する show メソッドを定義
(6) 受信 ID 値を取得し、get() 関数を使用してコンテンツを表示します
$post = Post::where('id', '=' , $id)->get();
(7) ビュー テンプレートの表示を返します
return view('post.show', ['posts' => $post]);
(8) 記事編集の編集メソッドを定義
(9) isset() 関数は、id パラメーターが設定されているかどうかを判断し、設定されている場合はその ID を取得し、そうでない場合は $post モデル インスタンスを作成します。
if (isset ($id)) {
$post = Post::find($id);
} else {
$post = new Post();
}
(10) 編集ビューテンプレートを返す
return view('post.edit')->with('posts', $post);
(11) save メソッドを作成します
(12) $id = null に設定すると、対応する ID はオプションになることができます
public function save(Request $request, $id = NULL)
(13) ID が設定されていない場合は、対応する ID フィールド値を作成し、他の入力コンテンツを渡して新しいデータを作成します。それ以外の場合は、対応するフィールドのコンテンツを更新します。
( isset($id)) {
//
Post::updateOrCreate(['id' => $id], $request->input());
} else {
Post::create($request->input()); 🎜>
この場所は、対応する ID フィールドの内容が渡される限り、比較的単純です。必要に応じて削除し、表示リストの投稿/インデックス表示リストのルートにリダイレクトできます。
3. 上記のコントローラーの内容を定義したら、次のステップは対応するビュー テンプレートを作成することです。
(1) インデックス表示テンプレート
(2) 表示テンプレートの表示
(3) テンプレートの編集と追加
5. テスト結果の表示
(1) テストの表示:
(2) テストの編集
(3)テストの追加
(4)テストの削除
問題の解決策:
1. データの追加または削除ができず、エラー ログに次のように表示されます:
解決策: $fillable ホワイトリスト コンテンツが有効になっておらず、投稿テンプレートで定義されていないため、フィールドはデータの追加を含め、データを変更できません。
これは記事の追加、削除、変更、クエリの簡単な例であり、今後も改良されていく予定です。