Sau khi trợ giúp thông qua trò chuyện, vấn đề là có một cột hiện có tên là group
và phương thức quan hệ cũng được gọi là group
, vì vậy giá trị cột trong bảng được ưu tiên hơn phương thức quan hệ.
Đổi tên phương thức quan hệ hoặc group
thành cột nào đó như group_id
cả hai đều là giải pháp phù hợp (Tôi đề xuất group_id
tuyến đường).
Câu trả lời ban đầu:
Bạn truy xuất nhóm thông qua thuộc tính ma thuật, không phải trực tiếp từ phương thức.
echo User::find(1)->group->name;
Nếu bạn truy xuất group()
, nó sẽ trả về đối tượng quan hệ, không thực hiện bất kỳ truy vấn nào và tìm nạp đối tượng liên quan.
Ngoài ra, Eloquent sẽ đưa ra các giả định về tên cột khóa ngoại của bạn là gì. Group
sẽ tự động dịch sang group_id
cột. Nếu bạn có một cột hiện tại được gọi là group
, thì bạn nên chỉ định điều đó một cách rõ ràng trong mối quan hệ của mình:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Nếu bạn nhận được lỗi "Đang cố gắng lấy thuộc tính của non-object" cho thuộc tính group
, thì mối quan hệ của bạn không trả lại bất kỳ kết quả nào ($user->group
sẽ là NULL
). Tại thời điểm đó, bạn nên đảm bảo rằng mối quan hệ của bạn được thiết lập đúng cách (ví dụ:sử dụng đúng thuộc tính của mình, hasOne, hasMany, v.v.) và đảm bảo rằng bạn thực sự có một mục nhập liên quan trong cơ sở dữ liệu của mình.