laravel5 中 关联查询

WBOY
發布: 2016-06-06 20:33:30
原創
1444 人瀏覽過

有这么一组数据

一个学生表users 和 学生成绩表 grades 两个表关联

在方法里面是这样的

<code>public function index()
{
    $result = User::where('is_admin', 0);
    $users = $result->get();
    $count = $result->count();       
    return view('admin.list', compact('count', 'users'));
}
</code>
登入後複製
登入後複製

视图循环是这样的

<code> @foreach ($users as $user)
    <tr>
        <td>{{$user->id}}</td>
        <td>{{$user->name}}</td>
        <td>{{$user->grade->math}}</td>
        <td>{{$user->grade->english}}</td>
        <td>{{$user->grade->c}}</td>
        <td>{{$user->grade->sport}}</td>
        <td>{{$user->grade->think}}</td>
        <td>{{$user->grade->soft}}</td>
    </tr>
@endforeach
</code>
登入後複製
登入後複製

得到的结果是 报错 Trying to get property of non-object (View:

<code>$user->grade->math
</code>
登入後複製
登入後複製

是找不到的 怎么做关联一起呢

回复内容:

有这么一组数据

一个学生表users 和 学生成绩表 grades 两个表关联

在方法里面是这样的

<code>public function index()
{
    $result = User::where('is_admin', 0);
    $users = $result->get();
    $count = $result->count();       
    return view('admin.list', compact('count', 'users'));
}
</code>
登入後複製
登入後複製

视图循环是这样的

<code> @foreach ($users as $user)
    <tr>
        <td>{{$user->id}}</td>
        <td>{{$user->name}}</td>
        <td>{{$user->grade->math}}</td>
        <td>{{$user->grade->english}}</td>
        <td>{{$user->grade->c}}</td>
        <td>{{$user->grade->sport}}</td>
        <td>{{$user->grade->think}}</td>
        <td>{{$user->grade->soft}}</td>
    </tr>
@endforeach
</code>
登入後複製
登入後複製

得到的结果是 报错 Trying to get property of non-object (View:

<code>$user->grade->math
</code>
登入後複製
登入後複製

是找不到的 怎么做关联一起呢

User.php

<code>public function grade()
    {
        return $this->hasOne('App\Grade');
    }
</code>
登入後複製

Grade.php

<code>public function user()
    {
        return $this->belongsTo('App\User');
    }
</code>
登入後複製

<code>php</code><code>User.php定义
public function Grade()
    {
        return $this->hasOne("App\Modules\Grade", 'user_id', 'id');
    }
controller.php
public function index()
{
    $result = User::where('is_admin', 0);
    $users = $result->grade()->get();
    $count = $result->count();       
    return view('admin.list', compact('count', 'users'));
}

view:
@foreach ($users as $user)
    <tr>
        <td>{{$user->id}}</td>
        <td>{{$user->name}}</td>
        <td>{{$user->math}}</td>
        <td>{{$user->english}}</td>
        <td>{{$user->c}}</td>
        <td>{{$user->sport}}</td>
        <td>{{$user->think}}</td>
        <td>{{$user->soft}}</td>
    </tr>
@endforeach

</code>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!