nyodo838
@nyodo838 (suzuka mami)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Laravel withを使って条件を付けたい

解決したいこと

Laravelで図書館で借りた本をユーザが確認できる様なものを作成しています。
booksテーブル で本を登録し usersテーブル にあるユーザの情報を用いて book_user テーブルに借りた本とユーザidそれから借りた日時として created_atを保存しています。

そこで その日(現在日時)に借りたレコードだけ引っ張り出したいのですがわからないです。。。

発生している問題・エラー

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'pivot_created_at' in 'where clause' (SQL: select * from `users` where exists (select * from `books` inner join `book_user` on `books`.`id` = `book_user`.`book_id` where `users`.`id` = `book_user`.`user_id` and date(`pivot_created_at`) = 2020-09-23))


該当するソースコード

$users = User::with(['books' => function ($q) {
             $q->whereDate('pivot_created_at', now());
         }])->first();
0

2Answer

エラーメッセージからbook_userテーブルではなく_userテーブルを参照しているようです。このあたりを探ってみてください。

1Like

Comments

  1. @nyodo838

    Questioner

    ありがとうございます!
    エラーが改善できたので修正しました。ご確認していただけると幸いです。
  2. UserクラスかDBのテーブルに問題がありそうです。確認してみてください。

pivot_created_atカラムがあるのはbook_userテーブルですか?

であれば、テーブル名を指定してあげる必要があるんじゃないでしょうか。

$q->whereDate('book_user.pivot_created_at', now());

※試してません


また質問と直接関係ないですが、回答をいただいた後、質問の内容を変更してますか?
もし回答を元に直した結果、エラーが変わったのであれば、元のエラーや質問はそのままにして、追記したほうが良いかもしれません。
その方が後から見る方の参考になるし、回答も付きやすそうです。

1Like

Comments

  1. @nyodo838

    Questioner

    同じエラーで改善されませんでした。
  2. エラーはpivot_created_atが見つからないという内容です。このカラムがあるのはどのテーブルですか?
    質問文にあるcreated_atに変えたら動いたりしませんか?

Your answer might help someone💌