我有一个名为doctor(staff_id,specialization)的表,另一个表是staff(staff_id,密码,姓名,电子邮件,地址,部门,子部门,帖子),在医生表中,外键staff_id
是对员工表的staff_id
属性。我不知道为什么我得到这个错误我使用Laravel 5.3请帮助我。
这是我的"员工模型"
namespace App;
use Illuminate\Database\Eloquent\Model;
class Staff extends Model
{
protected $table = 'Staff';
public function doctor(){
return $this->hasOne('App\Doctor');
}
}
这是我的" Doctor Model"
namespace App;
use Illuminate\Database\Eloquent\Model;
class Doctor extends Model
{
protected $table = 'Doctor';
public function staff(){
return $this->belongsTo('App\Staff');
}
}
这是控制器
use App\Doctor;
use App\Staff;
class PageController extends Controller
{
public function getIndex(){
$doctor = Doctor::all();
return view('pages.welcome')->withDoctor($doctor);
}
}
这是我使用它的welcome.blade.php
<pre>
<tr>
<td>{{ $doctor->staff->name }}</td>
</tr>
</pre>
当我运行它时出现了这个错误:
150a6b9d586ccbe6225ed748a7eb8dfc842ce323.php第26行中的ErrorException: 未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ staff(查看: C:\瓦帕\ WWW \本身\资源\视图\页面\ welcome.blade.php)
答案 0 :(得分:0)
尝试从控制器传递数据,如下所示:
public function getIndex(){
$doctor = Doctor::all();
return view('pages.welcome')->with('doctor', $doctor);
}
答案 1 :(得分:0)
Your controller should be.
use App\Doctor;
use App\Staff;
class PageController extends Controller
{
public function getIndex(){
$doctor = Doctor::all();
return view('pages.welcome',compact('doctor'));
}
}
Your views should be-
<pre>
@foreach($doctor as $doctors)
<tr>
<td>{{ $doctors->name }}</td>
</tr>
@endforeach
</pre>
答案 2 :(得分:0)
谢谢你们的帮助我终于找到了解决这个错误的方法 这里有一些可以帮到你的要点 - 1.在模型中,我们应该告诉模型一个主键,如我的&#34; STAFF&#34;模特会是这样的 命名空间App;
use Illuminate\Database\Eloquent\Model;
class Staff extends Model
{
protected $primarykey = 'staff_id';
protected $table = 'Staff';
public function doctor(){
return $this->hasOne('App\Doctor');
}
}
现在我们可以默认将主键调用为&#34; id&#34;。
我们必须为我们的&#34; DOCTOR&#34;模特也是 命名空间App;
use Illuminate\Database\Eloquent\Model;
class Doctor extends Model
{
protected $primarykey = 'staff_id';
protected $table = 'Doctor';
public function staff(){
return $this->belongsTo('App\Staff');
}
}
现在我们的控制器应该像
使用App \ Doctor;
使用App \ Staff;
类PageController扩展了Controller { public function getIndex(){ $ doctor = Doctor :: find(id); 返回视图(&#39; pages.welcome&#39;) - &gt; withDoctor($ doctor); } }
现在我的welcome.blade.php应该像 -
{{ $doctor->staff->name }}
这是有效的。