Laravel 5.7雄辩的上市关系

时间:2019-01-03 00:50:41

标签: php mysql laravel eloquent eloquent--relationship

我正在尝试通过join获取数据集,而我想使用雄辩而自动的方法,而无需手动查询。我也做过这种关系,但是当我尝试列出联接的数据时,不知何故它会这样做。

Laravel 5.7版 MySQL数据库

已更新,添加了数据库架构。 my_tab3s表: my_tab3s

mytab1表: enter image description here

错误:

  

“ SQLSTATE [42S22]:找不到列:1054未知列   “ where子句”中的“ myTab1.my_tab3_id”(SQL:从myTab1中选择*   ({1,2))中的myTab1my_tab3_id

myTab3.php

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class myTab3 extends Model
{
    //
    protected $table = 'my_tab3s';
    public $timestamps = true;


    protected $fillable = [
    'coolField',
    'muhCurrentDate',
    'rast',
    'myTab1_id'
  ];


    public function myTab1(){
        return $this->hasOne('App\myTab1');
    }
}

myTab1.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class myTab1 extends Model
{
    //
    public function scopeBigger($query){
        return $query->where('id','>','1');
    }
    public function scopeHasLetterZ($query){
        return $query->where('someField','like','%z%');
    }

    public function gimmeAll(){
        return myTab1::All();
    }
    protected $table = 'myTab1';
    public $timestamps = true;

    protected $fillable = [
    'someField'
  ];


    public function myTab3(){
        return $this->belongsTo('App\myTab3');
    }
}

myTab3Controller.php INDEX方法

 public function index()
    {

        /*$dataSet = myTab3::All();*/
        //$dataSet->myTab1()->get();
        $dataSet = myTab3::with('myTab1')->get();
        return view('myTab3.index',compact('dataSet'));
    }

查看部分

@foreach($dataSet as $data)
        <tr>
            <td>{{$data->id}}</td>
            <td>{{$data->coolField}}</td>
            <td>{{$data->muhCurrentDate}}</td>
            <td>{{$data->created_at}}</td>
            <td>{{$data->updated_at}}</td>
            <td>{{$data->rast}}</td>
            <td>{{$data->myTab1->someField}}</td>
        </tr>
        @endforeach

1 个答案:

答案 0 :(得分:0)

没有数据库很难说,但我认为您颠倒了关系,belongsTo应该是myTab3hasOne应该是myTab1

编辑:

尝试:

public function myTab1(){
    return $this->belongsTo('App\myTab1', 'myTab1_id');
}