モデルからプロファイル名を取得するlaravelがクラスIlluminate \ Database \ Eloquent \ Builderのオブジェクトを文字列に変換できませんでした

001221

こんにちは私はuser_id自分のユーザーモデルにを渡し、これをプロファイルテーブルに結合して、ユーザーの名を次のように取得します。

public function scopefirstnameByUserId($id)
{

    return static::where('users.id','=',$id)->join('profiles', function ($join,$id) {
                    $join->where('profiles.user_id', '=', $id);
                    })->pluck('firstname');
}

使用法:

User::firstnameByUserId(2);

ただし、次のエラーが発生します。

Missing argument 2 for User::{closure}()

編集#

関数が次のように更新されました。

public function scopefirstnameByUserId($id)
{
    return static::where('users.id','=',$id)->join('profiles',function ($join) use ($id) {
                            $join->where('profiles.user_id', '=', $id);
                        })->pluck('firstname');
}

しかし、今このエラーをスローします:

Object of class Illuminate\Database\Eloquent\Builder could not be converted to string

私が間違っていることについて何か考えはありますか?

アルファ

あなたのコードでは:

function ($join,$id) {

}

する必要があります:

function ($join) use ($id) {
    $join->where('profiles.user_id', '=', $id);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ