

現在Laravelとsqlite3を利用してwebアプリを制作しています。

まず理想の処理の流れとしては  
1．userページにログインする。ログイン後はすべてのユーザーが各home/にログインできます。Laravelでデフォルトでそういう仕様なので設定は変えていません。  
2.home/にログインするとその中に記事を投稿するというボタンがあるので押下する。  
3.article/ページに移動する。その中にtextareaがあるのでそこに文を記述し、投稿ボタンを押すとarticleテーブルに値が保存される。  
4.リレーションされているので各ユーザーページごとに投稿内容一覧が表示される。←ここで問題が起きています。

その問題というのが、ユーザー1とユーザー2で各投稿をします。  
例えばuse1でarticleページに遷移して(これはuser1の投稿です)とテキストエリアに記述して投稿ボタンを押下します。  
するとuser1のユーザーページ一覧に(これはuser1の投稿です)という文章が表記されます。  
その後にuser2にログインしてarticleページに遷移し(これはuser2の投稿です)と投稿してtestuser2のページを確認するとtestuser2という表示が無く、user1のページに(これはuser2の投稿です)投稿がされしまいます。

なにか考えられる可能性はあるでしょうか。お知恵を拝借いたしたくここに投稿させていただきました。

なにかわかる事があれば教えていただきたいです。よろしくお願いします。

* * *

[![ユーザー1でログインします。](https://i.stack.imgur.com/PC1nU.png)](https://i.stack.imgur.com/PC1nU.png)

記事を追加するを押下すると  
[![投稿ページに遷移します。](https://i.stack.imgur.com/k8cHM.png)](https://i.stack.imgur.com/k8cHM.png)

ユーザー1の名前と投稿内容が表示されます。  
[![ユーザー1の一覧表示](https://i.stack.imgur.com/L50C8.png)](https://i.stack.imgur.com/L50C8.png)

次にユーザー2で投稿します。  
[![ユーザー2](https://i.stack.imgur.com/RVbnx.png)](https://i.stack.imgur.com/RVbnx.png)

articleに移動して以下投稿します。  
[![ユーザー2投稿](https://i.stack.imgur.com/dpk5d.png)](https://i.stack.imgur.com/dpk5d.png)

ユーザー2のページに戻ります。articleがありません、、  
[![ユーザー2遷移後一覧](https://i.stack.imgur.com/19eNU.png)](https://i.stack.imgur.com/19eNU.png)

ユーザー1のページを確認するとユーザー2で投稿したはずの内容がユーザー1にあります。  
[![投稿後](https://i.stack.imgur.com/99UTf.png)](https://i.stack.imgur.com/99UTf.png)

userテーブルとarticleテーブルをリレーションするためにUser側が1なのでhasMany  
article側が多なのでbelongsToとして紐づけています。

**User.php**

[code]

      public function articles(){
            /**
             * リレーション一対多の関係
             * user(1):article(多)
             * articleテーブルを新しい順で更新する。
             * 
             * 
               */
            return $this->hasMany('App\Models\Article')->latest();
        }
    
[/code]

**Article.php**

[code]

        /**
         * 一対多の処理多側、articleの処理。
         * 
         *  */  
        public function user(){
            return $this->belongsTo('App\models\User');
        }
    
[/code]

ユーザーのhomeビューhome.blade.php ユーザー自身のページです。

[code]

       <!-- ここにユーザーの記事一覧を表示する。 -->
                    <table class="table table-striped">
                    <thead>
                        <tr>
                            <th>{{ __('Author') }}</th>
                            <th>{{ __('article') }}</th>
                        </tr>
                        <!-- ログイン中のユーザー=user その中のarticles -->
                        @foreach($user -> articles as $article)
                            <tr>
                                <td>
                                    <!-- usernameを出力する -->
                                    {{$user->name}}
                                </td>
                                <td>
                                    <!-- articleテーブルのarticleを表示する -->
                                    {{$article->article}}
                                </td>
                            </tr>
                        @endforeach
                    </thead>
                    </table>
    
[/code]

以下がユーザーテーブル

[code]

    user_create_table
    <?php
    
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    class CreateUsersTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('users', function (Blueprint $table) {
                $table->id();
                //$table->bigInteger('id');
                $table->string('name');
                $table->string('email')->unique();
                $table->timestamp('email_verified_at')->nullable();
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('users');
        }
    }
    
[/code]

以下がarticleテーブル  
**create_article_table**

[code]

    <?php
         * @return void
         */
        public function up()
        {
            Schema::create('articles', function (Blueprint $table) {
                $table->id();
                $table->string('article');
                $table->string('article_title');
                $table->timestamps();
                /** 
                 * 以下articleテーブルから親テーブルの外部キーに接続する。
                 * ->default(1);←こいつがある限りidがiのユーザーしか反映されない。
                 * ->default();
                */
                $table->integer('user_id')->unsigned()->default();
                $table->foreign('user_id') //外部キー制約
                ->references('id')//userのidカラムを参照する?
                ->on('users')//usersテーブルのidを参照する
                ->onDelete('cascade');//ユーザーが削除されたら紐付くpostsも削除               
            });
        }
    
[/code]


CC BY-SA 4.0
2020-12-31T09:27:05.270
72995
2020-12-31T11:24:26.657
2020-12-31T11:24:26.657
3060
43365
question
php laravel sqlite
userテーブルとarticleテーブルをリレーションするためにコーディングをしuserページにarticleの記事一覧を表示したいのですが、おかしな挙動が働いており、原因がわかりません。