我有一个名为doctor(staff_id,specialization)的表,另一个表是staff(staff_id,密码,姓名,电子邮件,地址,部门,sub_department,post)和在doctor table中的外键 staff_id
是对staff表的 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');
}
}
这是我的“医生模特”
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:\ wamp \ www \ se \ resources \ views \ pages \ welcome.blade.php)
3 回答
尝试从控制器传递数据,如下所示:
谢谢你们的帮助我终于找到了解决这个错误的方法,这里有一些可以帮助你的方法 - 1.在模型中我们应该告诉模型一个主键,就像我的“STAFF”模型将像命名空间App;
现在我们可以默认将主键称为“id” .
我们必须为我们的“DOCTOR”模型更改这个命名空间App;
使用App \ Doctor;
使用App \ Staff;
class PageController extends Controller {public function getIndex(){$ doctor = Doctor :: find(id);返回视图('pages.welcome') - > withDoctor($ doctor); }}
这是有效的 .
for more information click here