【发布时间】:2020-12-04 04:59:08
【问题描述】:
我是 Laravel 的新手大约几周,现在我正在学习关系任务。我一直在搜索有关它的相关主题,但我不知道为什么我的代码不起作用。
我有 2 张员工和电话表:
员工:
- ID int
- 名称 varchar
- 年龄 int
- 位置 varchar
- 地址 varchar
- created_at 时间戳
- update_at 时间戳
- deleted_at 时间戳
电话:
- ID int
- 没有 varchar
- Employee_ID int
我正在使用 Laravel v.8
型号:PhoneS.php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class PhoneS extends Model
{
use HasFactory;
protected $table = "Phone";
public function EmployeeS()
{
return $this->belongsTo('App\Models\EmployeeS', 'Employee_ID', 'ID');
}
}
模型: EmployeeS.php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class EmployeeS extends Model
{
use HasFactory;
protected $table = "Employee";
public function PhoneS()
{
return $this->hasOne('App\Models\PhoneS', 'Employee_ID', 'ID' );
}
}
控制器:Phone.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\EmployeeS;
class Employee extends Controller {
public function index()
{
$EmployeeS = EmployeeS::all();
return $EmployeeS;
}
}
结果:
[
{
“身份证”:1,
“姓名”:“约翰”,
“年龄”:26,
“职位”:“IT”,
“地址”:“林荫大道”,
“created_at”:空,
“updated_at”:空,
“deleted_at”:空
},
{
“身份证”:2,
“名称”:“Doe”,
“年龄”:25,
“位置”:“加速”,
"地址": "大道街",
“created_at”:空,
“updated_at”:空,
“deleted_at”:空
},
...
...
]
那里没有字段:PhoneS...
当我尝试使用以下命令访问它时:return $EmployeeS->PhoneS,它会给出错误消息:
例外
此集合中不存在属性 [PhoneS] 实例。
谁能告诉我发生了什么?
我相信我错过了 Laravel 关系概念。
你能指出我错过的地方吗?
提前谢谢..
【问题讨论】:
-
欢迎来到 SO ...
EmployeeS::all();到EmployeeS::with('PhoneS')->get(); -
检查this,如果您遵循建议的标准,您对非强制错误的头痛就会少很多。
-
太棒了!谢谢@KamleshPaul & Tpojka
标签: laravel relationship