EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

Laravel投稿サイト構築.47 こまごま作業(テーブル結合など)

前回、やっとカテゴリ一覧を表示できた。

tenomeuonome.hateblo.jp

 

今回はこまごまとしたところを。

 

■ログイン中のユーザ名表示

{{ auth()->user()['name'] }} で表示可能だった。

 

■投稿時に名前入力を省略

ログインを前提とするので、投稿者の名前入力は省略したい。


テーブルの名前欄を削除してid欄を追加する。

$php artisan make:migration thread_drop_name_add_id --table=threads

 

   public function up()
    {
        Schema::table('threads', function (Blueprint $table) {
            $table->dropColumn('user_name');
            $table->bigInteger('user_id');
        });
    }

 

    public function down()
    {
        Schema::table('threads', function (Blueprint $table) {
            $table->string('user_name');
            $table->dropColumn('user_id');
        });
    }


$php artisan migrate

 

■投稿一覧の名前をユーザマスタから取得

投稿テーブルのユーザIDからユーザマスタを結合したい。

codelikes.com

Controller

$threads = Thread::orderBy('created_at', 'desc')->paginate(3);

と記述していたのを、


        $threads = Thread::select([
            't.category',
            't.created_at',
            't.message',
            't.message_title',
            't.user_id',
            't.user_identifier',
            'u.name as user_name',
        ])->from('threads as t')
        ->join('users as u', function($join) {
            $join->on('t.user_id', '=', 'u.id');
        })
        ->orderBy('t.created_at', 'desc')->paginate(5);


とした。

順調順調。

■書き込み欄の投稿ユーザ名削除

bladeから項目を削除して、

Controllerの投稿情報登録処理を修正する。

 

$threads = new Thread;
$form = $request->all();


$threads->fill($form)->save();

 

ログインユーザIDを登録項目に設定したいので、☆の場所に

$form['user_id'] = auth()->id(); を挿入する。

blade側でid埋め込めばいいか?と考えたが、なりすましができてしまう可能性があったのでやめておいた。

投稿ボタンを押すと、

投稿できて、ユーザ名もidから引っ張ってこれてる。

 

返信にも反映させたいが、時間切れ。

 

続く