質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

2520閲覧

【laravel】SQLSTATE[42S22]:カラムが見つからないというエラーを解消したいです。

takumiiimo

総合スコア1

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/08/15 09:52

前提・実現したいこと

PHP(laravel)でinstagramのようなシステムを作っています。

クリエイター(ファッションデザイナー等)と
モデル(ファッションモデルなど)専用のSNSアプリなので、
MVCフレームワークをクリエイターとモデルで2つに分けて作成しています。

「イイネ機能????」を実装中に以下のエラーメッセージが発生しました。

よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ
######"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'creator_likes.creator_post_id' in 'where clause' (SQL: select * from creator_likes where creator_likes.creator_post_id = 7 and creator_likes.creator_post_id is not null) (View: /home/ec2-user/environment/myapp/resources/views/post/like_text.blade.php) (View: /home/ec2-user/environment/myapp/resources/views/post/like_text.blade.php) ◀"

カラムが見つからないというエラーですが、
なぜ[creator_post_id」というカラムを
探してしまっているのかがわかりません。
教えてください。よろしくお願いします。

該当のソースコード

creator_likes_table.php(テーブル)

public function up() { Schema::create('creator_likes', function (Blueprint $table) { $table->increments('id'); $table->integer('post_id'); $table->integer('user_id'); $table->timestamps(); }); }

CreatorLike.php (モデル)

class CreatorLike extends Model { public function user() { return $this->belongsTo('App\User'); } public function post() { return $this->belongsTo('App\CreatorPost'); } }

creator_table_php (テーブル)

public function up() { Schema::create('creator_posts', function (Blueprint $table) { $table->increments('id'); $table->string('caption'); $table->integer('user_id'); $table->timestamps(); }); }

CreatorPost.php (モデル)

class CreatorPost extends Model { public function user() { return $this->belongsTo('App\User'); } public function likes() { return $this->hasMany('App\CreatorLike'); } public function likedBy($user) { return CreatorLike::where('user_id', $user->id)->where('post_id', $this->id); } }

User.php (モデル)

public function likes() { if($this->role === 'model'){ return $this->hasMany('App\ModelLike'); } if($this->role === 'creator'){ return $this->hasMany('App\CreatorLike'); } }

CreatorLikesController.php (コンローラー)

public function store(Request $request) { $like = new CreatorLike; $like->post_id = $request->post_id; $like->user_id = Auth::user()->id; $like->save(); return redirect()->url()->current(); } public function destroy(Request $request) { $like = CreatorLike::find($request->like_id); $like->delete(); return redirect()->url()->current(); }

index.php (ビュー)

<div class="card-body"> <div class="row parts"> <div class="like-icon-post-{{ $post->id }}"> @if ($post->likedBy(Auth::user())->count() > 0 ) <a class="loved hide-text" data-remote="true" rel="nofollow" data-method="DELETE" href="creator/likes/{{ $post->likedBy(Auth::user())->firstOrFail()->id }}">いいねを取り消す</a> @endif </div> <a class="comment" href="#"></a> </div> <div id="like-text-post-{{ $post->id }}"> @include('post.like_text') </div>

like_text.php (ビュー)

<strong> @foreach ($post->likes as $like) @if ($loop->count == 1) {{ $like->user->name }} </strong> が「いいね!」しました @elseif ($loop->last) </strong>and<strong> {{ $like->user->name }}</strong> が「いいね!」しました @elseif (!$loop->first) </strong>and {{ $loop->count - 1 }}人 が「いいね!」しました @break @else {{ $like->user->name }}, @endif @endforeach

補足情報(FW/ツールのバージョンなど)

PHP 7.2.31
Laravel Framework 5.5.49

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

creator_post_id

これは

CreatorPost

return $this->hasMany('App\CreatorLike');

から発生しているように思えます。

これは、リレーション先のテーブル名を単数形にして_idを追加する。というのがLaravelのデフォルト挙動のためです。
hasManyの第3、第4引数で調整できます。

投稿2020/08/15 09:58

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Schema::create('creator_posts', function (Blueprint $table) {
$table->increments('id'); $table->string('caption'); $table->integer('user_id'); $table->timestamps();

だから、

n 'creator_likes.creator_post_id' in 'where clause' (SQL: selec

creator_post_id がないだけでは?

投稿2020/08/15 09:58

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問