Laravel:通过外键获取数据时尝试获取非对象的属性

时间:2018-10-16 14:35:34

标签: php mysql laravel

我有一个User和一个Tag模型。两者都是通过1:N关系链接的。

我正在尝试从tag_name模型中提取col user。但是我收到此错误:

  

试图获取试图获取非对象的属性'tag_name'。

用户模型具有

 // linking with table tag
public function tags(){
    return $this->hasMany('App\Tag');
}

标记模型具有

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

我的观点有

 {{ Form::checkbox('tag[]',$user->tag_id,['class'=>'cats']) }}
 {{ Form::label('tb',$user->tag_id->tag_name,['class'=>'btn btncategory']) }}

控制器在索引函数中具有以下内容

 $user = User::find($user_id);
 return view('user.create_post')->with('user', $user );

路线:

Route::get('create', 'PostsController@index');

请在错误之处帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

问题是您的user有多个tags,您需要遍历其中的每一个:

在刀片文件中:

@foreach ($user->tags as $tag) 
    <label class="btn btncategory">
        <input type="checkbox" name=tag[] value="{{$tag->id}}" class="cats" />
        {{$tag->name}}
    </label>
@endforeach

现在,当您提交此标签时,您应该在数组request()->input('tag')中拥有所有选中的标签

请注意,我已经删除了Form::,因为我喜欢将复选框放在标签内,但是如果需要,您可以使用Form::样式,如下所示:

@foreach ($user->tags as $tag) 
   {{ Form::checkbox('tag[]',$tag->id,['class' => 'cats']) }}
   {{ Form::label('tb',$tag->name,['class' => 'btn btncategory']) }}
@endforeach