Laravel一对多关系属性[jadwal_poliklinik]在此集合实例上不存在

问题描述 投票:0回答:2

有人可以帮助我与Laravel建立关系吗?我有数据库结构

   poliklinik Table
   ===========
   id
   nama_poliklinik
   ****************

   jadwal_poliklinik Table
   =======================
   id
   poliklinik_id
   hari
   ***********************

关系是“一个” polikinik“有很多” jadwal_poliklinik

我的模特poliklinik是

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\jadwal_poliklinik;

class poliklinik extends Model
{
    protected $table = 'poliklinik';

    public function jadwal_poliklinik()
    {
        return $this->hasMany(jadwal_poliklinik::class);
    }
}

我的jadwal_poliklinik模型

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\poliklinik;

class jadwal_poliklinik extends Model
{
    protected $table = 'jadwal_poliklinik';

    public function poliklinik()
    {
        return $this->belongsTo(poliklinik::class);
    }

}

我的控制器是

public function jadwal()
    {
        $poliklinik = poliklinik::all();

        return view('jadwal', compact('poliklinik'));
    }

和视图

            <div class="row">
                @foreach($poliklinik as $p)
                <div class="col-md-4 animate-box">
                    <div class="blog-entry">
                        <a href="blog.html" class="blog-img" style="background-image: url(images/blog-1.jpg);"></a>
                        <div class="desc">
                            <h3>{{$p->nama_poliklinik}}</h3>
                            <hr/>
                            @foreach($poliklinik->jadwal_poliklinik as $jp)
                            {{$jp->hari}}<br/>
                            @endforeach
                        </div>
                    </div>
                </div>
                @endforeach
            </div>

但结果是

例外属性[jadwal_poliklinik]在此不存在集合实例。

有人可以帮我吗?

laravel eloquent one-to-many
2个回答
0
投票

必须为$p->jadwal_poliklinik

@foreach($p->jadwal_poliklinik as $jp)
      {{$jp->hari}}<br/>
 @endforeach

但是,如果可以使用CamelCase作为类名,则更好。那是标准。您可以简单地使用artisan命令来创建类。有关更多详细信息,请参见波纹管链接。

https://laravel.com/docs/7.x/eloquent#defining-models


0
投票

为了使用该关系,您应该首先加载它...

您可以使用'with'方法加载它:

public function jadwal()
    {
        $poliklinik = poliklinik::with('jadwal_poliklinik')->all();

        return view('jadwal', compact('poliklinik'));
    }

现在刀片中的代码应该可以工作了..

有关渴望加载的更多详细信息,在:

https://laravel.com/docs/7.x/eloquent-relationships#eager-loading

© www.soinside.com 2019 - 2024. All rights reserved.