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

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

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

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

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

1回答

4245閲覧

laravel modelで定義したメソッドが未定義と言われる

yuuki1616

総合スコア0

Laravel

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

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2020/09/27 10:04

#起きてる問題
インスタのいいね機能のような物を実装中で、既に「いいね!」しているかを判定するis_favorite()関数をUser.phpに定義したのだが、そのコードが読み込まれる際に以下のエラーが出力される
#期待している挙動
このエラーが出ないようにする
#試したこと
エラーが出ている一文が@if ($user->is_favorite($post->id))なので$userに値が入ってるか確認(入っていた)
is_favorite()関数が適切な場所に定義されているか(されていた)
#エラーメッセージ
Call to undefined method Laravel\Socialite\Two\User::is_favorite() (View: /var/www/resources/views/index.blade.php)
#該当のコード
index.blade.php

<h1>ホーム画面</h1> <!-- 画像とコメントをすべて表示--> @foreach($posts as $post) <div class="card-header text-center"> <img src= {{ Storage::disk('s3')->url($post->image_file_name) }} alt="" width=250px height=250px></a> </div> <div class="card-body p-1"> <span class="card-title">{{link_to('/profile',$post->user)}}<br>{{ $post->image_title }}</span> <!-- デバック(userはうまく入っていた)--> {{ dd($user) }} @if ($post->user!==$username) @if ($user->is_favorite($post->id)) {!! Form::open(['route' => ['favorites.unfavorite', $post->id], 'method' => 'delete']) !!} {!! Form::submit('いいね!を外す', ['class' => "button btn btn-warning"]) !!} {!! Form::close() !!} @else {!! Form::open(['route' => ['favorites.favorite', $post->id]]) !!} {!! Form::submit('いいね!を付ける', ['class' => "button btn btn-success"]) !!} {!! Form::close() !!} @endif @endif @if ($post->user===$username) <form method="post" action="/delete/{{$post->id}}"> {{ csrf_field() }} <input type="submit" value="削除"> </form> @endif </div> @endforeach {{ $posts->links() }}

User.php

<?php namespace App; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Socialite\Two\User; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function articles(){ return $this->hasMany('App\Models\Article'); } public function post(){ return $this->hasMany('App\Models\Post'); } public function favorites() { return $this->belongsToMany(Post::class, 'favorites', 'user_id', 'post_id')->withTimestamps(); } public function favorite($postId) { $exist = $this->is_favorite($postId); if($exist){ return false; }else{ $this->favorites()->attach($postId); return true; } } public function unfavorite($postId) { $exist = $this->is_favorite($postId); if($exist){ $this->favorites()->detach($postId); return true; }else{ return false; } } public function is_favorite($postId) { return $this->favorites()->where('post_id',$postId)->exists(); } }

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

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

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

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

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

tu789

2020/09/27 11:13

User.phpじゃなくてControllerですることでは?
tu789

2020/09/29 07:47

> こちらの記事を参考にしているのですが、User.phpに追加するようです うーん。できない様であればControllerで行った方がいいかと思いますよ。。 Controllerに記述しない理由を聞いてるわけで、その記事に書いてあったからは理由にならないかと思います。 > ご回答ありがとうございます App\Userを渡すにはどうしたら良いのでしょうか? 上記以外のエラーはまだ出てないですが、なぜこの定義だとエラーが出るのでしょうか? Laravelを扱う以前にPHPができていない様な印象です。理解しているのであれば分かることなので、、
guest

回答1

0

App\UserではなくLaravel\Socialite\Two\Userをviewに渡してるので
index.blade.phpを表示するコントローラーで間違えている。

それ以前にこう定義したらエラー出てるのでは。

use Laravel\Socialite\Two\User; class User extends Authenticatable {

投稿2020/09/27 10:16

kawax

総合スコア10377

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

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

yuuki1616

2020/09/27 14:33

ご回答ありがとうございます App\Userを渡すにはどうしたら良いのでしょうか? 上記以外のエラーはまだ出てないですが、なぜこの定義だとエラーが出るのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問