I have laravel's basic auth system, a custom model called SecurityQuestion and a pivot table called securityquestion_user
User
public function securityquestion_user() {
return $this->belongsToMany(SecurityQuestion::class, 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}
SomeController
First option
foreach(Auth::user()->securityquestion_user as $question) {
dd($question);
}
Error: Undefined property: Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany::$pivot
Second Option
foreach(Auth::user()->securityquestion_user() as $question) {
dd($question);
}
Error: returns false
Ok guys I got it,
I modified the relation to this:
public function securityquestion_user() {
return $this->belongsToMany('App\SecurityQuestion', 'securityquestion_user', 'user_id', 'question_id')->withPivot('question_id', 'user_id', 'answer');
}
Basically I reversed the order and place 'user_id' parameter before 'question_id' parameter.
foreach(Auth::user()->securityquestion_user as $question) {
print '<pre>';
print_r($question->pivot->answer);
print '</pre>';
}
Thank you very much for you interest.
Have you added namespace for auth in controller? Like:
use Auth;
If not imported then use this for it:
foreach(\Auth::user()->securityquestion_user as $question) {
dd($question);
}
And also correct your function in user model
public function securityquestion_user() {
return $this->belongsToMany('App\SecurityQuestion::class', 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}
because your first option is correct except it!!
Try by using hasMany instead of belongsToMany in user model
public function securityquestion_user() {
return $this->hasMany (SecurityQuestion::class, 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}
Try like this, withPivot function expects one parameter: array or string.
public function securityquestion_user() {
return $this
->belongsToMany(SecurityQuestion::class, 'securityquestion_user', 'question_id', 'user_id')
->withPivot(['question_id', 'user_id', 'answer']);
}
And 'question_id' and 'user_id' are not necessary to be in withPivot function, since they are the foreign keys.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.