我正在尝试仅从某个特定外部ID的关系数据库中返回数据。为此,我要使用with()访问模型,并从关系函数中获取数据。在这种情况下,为'modules()'。
学位模型:
class Degree extends Model
{
protected $guarded = [];
public function user()
{
return $this->belongsTo('App\User');
}
public function modules()
{
return $this->hasMany('App\Module');
}
模块型号:
class Module extends Model
{
protected $guarded = []
public function degree()
{
return $this->belongsTo('App\Degree');
}
控制器:
public function show($id)
{
$degree = Degree::find($id);
$modules = Degree::with('modules')->find($id)->Module;
return view('/degrees/show')->with('Degree', $degree)->with('Module', $modules);
}
因此,我期望发生的是$ modules对象在模型中搜索'modules()',并找到具有与学位匹配的foreignID的条目(在本例中为1)。然后,在我看来:
@if(count( $Module ) > 0)
@foreach($Module as $module)
<div class="well">
<h3><a href="#"> {{ $module->title }} </a></h3>
<p>{{ $module->description }}</p>
<small>Added {{ $module->created_at }}</small>
</div>
@endforeach
@else
<p>No Modules Added Yet</p>
@endif
通过对象$ Module推送的数据被计算并显示。
不幸的是,我收到此错误:
count():参数必须是实现Countable的数组或对象
任何想法都将有所帮助,即使这意味着采取完全不同的方法。
您需要以这种方式使用count()
:
@if($Module->count() > 0)