首页 > 解决方案 > 如何获得由其他用户撰写的用户提交的推荐信

问题描述

我无法让其他用户提交的所有推荐书显示在相关用户(正在审核的用户)的用户个人资料上。

有两张桌子。首先是带有, , ,和的users表格。我有一张表,其中存储了带有、和的推荐信。(获取提交表单的 id并获取接收推荐的人的 id)。idnameemailphotophonetitleavisidprofile_iduser_idcommentuser_idUserprofile_ididUser

我尝试像下面那样做,但真的不知道它是否正确。而且我不确定我的关系是否正确。我对 Laravel 有点陌生。但无论如何,这是我到目前为止所尝试的:

这是User模型:

public function avis()
{
    return $this->hasMany('App\Avis', 'profile_id', 'user_id');
}

这是我的Avis模型:

protected $fillable = ['comment','profile_id'];

public function user() 
{
    return $this->belongsTo('App\User');
}

这是我在显示个人资料和推荐列表的控制器中所做的:

public function Details($id)
{
    $detail = User::with(['area.town', 'services'])->find($id);

    $avis = User::whereHas('avis', function ($query) use ($id) {
            $query->where('profile_id', '=', $id);
        })
        ->limit(3)
        ->get();

    //dd($avis);

    return view('Users', compact('avis', 'detail'));
}

这是我用来写推荐信的表格:

<div id="avisForm"> 
    <p class="feedback_message">We are here to make sure you are sastified and your transactions are safe. We do appreciate and will respond quickly to any feedback from you.</p>

    {!! Form::open(['route' => 'avis.store']) !!}

    <input type="hidden" name="profile_id" value="{{ $detail>id }}">
    {!! Form::textarea('comment', null, ['placeholder' => 'Message', 'required' => 'required']) !!}
    {!! Form::submit('Envoyez', ['class' => 'formBtn','style' => 'margin-top:10px']) !!}

    {!! Form::close() !!}
</div>

这是用于存储推荐的控制器方法:

public function store(AvisCreateRequest $request)
{
    $avis = new Avis;
    $id = Auth::user()->id;

    $avis->comment = $request->comment;
    $avis->profile_id = $request->profile_id;
    $avis->user_id = $id;

    //dd($avis);

    $avis->save();

    return back()->with('success_message', 'Votre Avis a ete envoyez avec succes!');
}

有人可以向我指出我做错了什么吗?

标签: laravellaravel-5laravel-5.5relationships

解决方案


public function avis()
{
    return $this->hasMany('App\Avis', 'profile_id', 'id');
}

嘿伙计,一定是这样的,'profile_id'和'user_id'都是外键。'id' 是你在 users 表中的本地键,如果你调用 avis() 它将匹配users 表idavis 表profile_id


推荐阅读