【发布时间】:2020-09-20 06:27:12
【问题描述】:
我试图理解 Eloquent 关系,但似乎我在理解它时遗漏了一些东西。我有:
- 一个
Meeting产生许多Documents。 - 可以为一个
Meeting生成一个特定的Document。
因此是一对多的关系。我正在尝试在Document 详细信息表中显示 'meeting_name',但出现此错误:
试图获取非对象的属性“meeting_name”(查看:C:\wamp64\www\yajra_contact_system\resources\views\documents\index.blade.php)
这是我的代码。
请用代码解决方案说明:
app\Document.php 文件:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Document extends Model
{
protected $fillable = [
'document_name',
'document_desc',
];
public function meeting(){
return $this->belongsTo(Meeting::class);
}
}
app\Meeting.php 文件:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Meeting extends Model
{
protected $fillable = [
'document_id',
'meeting_name',
'meeting_desc',
'room_no',
'no_of_invitees',
'comments'
];
public function documents(){
return $this->hasMany(Document::class);
}
}
app\Http\Controllers\DocumentsController.php 文件:
namespace App\Http\Controllers;
use App\Document;
use App\Meeting;
use Illuminate\Http\Request;
class DocumentsController extends Controller
{
public function index()
{
$documents = Document::all();
$meetings = Meeting::all();
return view('documents.index', compact('documents', 'meetings'));
}
}
resources\views\documents\index.blade.php 文件:
@foreach($documents as $document)
<tr>
<td>{{$document->id}}</td>
<td>{{$document->document_name}}</td>
<td>{{$document->document_desc}}</td>
<td>{{$document->meetings->meeting_name}}</td> <!-- ERROR IS HERE -->
</tr>
@endforeach
【问题讨论】:
-
你可以在 dd($document->meetings); 时发布结果吗?很可能你得到了一个数组。试试 $document->meetings->first()->meeting_name
-
当我尝试 $document->meetings->first()->meeting_name 时:
Facade\Ignition\Exceptions\ViewException Call to a member function first() on null (View: documents\index.blade.php -
我不太清楚如何在控制器中使用 dd()。对 Laravel 有点陌生
-
这意味着你试图获得的关系是空的。只需在 @foreach 之后在视图中输入此内容,{{ dd($document->meetings) }} 然后刷新浏览器
-
我死后的值是 null 并转储到 @foreach,{{ dd($document->meetings) }}
标签: laravel eloquent laravel-7 eloquent-relationship