Laravel 5.7 Eloquent Relation для листинга

Я пытаюсь получить набор данных с помощью соединения, и я хочу сделать это с помощью eloquent и автоматически без ручного запроса. Я тоже сделал отношения, но когда я пытаюсь перечислить объединенные данные, это происходит как-то иначе.

Laravel версия 5.7
База данных MySQL

ОБНОВЛЕНО, добавлена ​​схема базы данных.
таблица my_tab3s:
my_tab3s

таблица mytab1:
введите описание изображения здесь

Ошибка:

«SQLSTATE [42S22]: столбец не найден: 1054 столбец неизвестен
‘myTab1.my_tab3_id’ в ‘предложении where’ (SQL: select * from myTab1
где myTab1,my_tab3_id в (1, 2)) «

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

0

Решение

Трудно сказать без базы данных, но я думаю, что вы измените свои отношения, это должно быть belongsTo за myTab3 а также hasOne за myTab1

РЕДАКТИРОВАТЬ:

попробуйте с:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]