Я не очень хорош в этом вопросе.
У меня есть две таблицы. Buyers and Trackers.
В таблице трекеров у меня есть эти столбцы
id, buyer_id, style_name
, а таблица покупателя
id, buyer_name
Когда я получаю и отображаю список трекеров, я хочу уметь также отображать имя_покупателя.
в моем покупателе. php модель
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tracker extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $table = 'trackers';
protected $fillable = [
'buyer_id',
'style_name',
];
public function buyer()
{
return $this->hasOne('App\Buyer');
}
}
Я использую ремесленника, чтобы проверить. Итак, код:
$tracker = Tracker::find(1)->buyer;
но я получаю эту ошибку
Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'buyers.tracker_id' in 'where clause' (SQL: select * from `buyers` where `buyers`.`tracker_id` = 1 and `buyers`.`tracker_id` is not null limit 1)'
Он ищет tracker_id в таблице покупателей, но я только один, чтобы получить его с помощью его идентификатора. Что я делаю не так?
это файл миграции трекеров
public function up()
{
Schema::create('pattern_room_trackers', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('buyer_id');
$table->string('style_name');
$table->foreign('buyer_id')
->references('id')
->on('buyers')
->onDelete('cascade');
});
}
Я также не знаю, как отобразить это в виде блейда.
TrackerController. php
public function index()
{
$trackers = Tracker::latest()->paginate(5);
return view('trackers.index',compact('trackers'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
index.blade. php
@foreach ($trackers as $tracker)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $tracker->style_name }}</td>
<td>{{ $tracker->buyer_name }}</td>
</tr>
@endforeach
Спасибо.