Итак, у меня есть две таблицы: (у них есть больше столбцов, но это важные)
проектов
id PK AI
customer_id (клиенты FK)
Покупатель
id PK AI
название
Теперь на моей странице указателя я хочу показать прослушивание проектов в таблице, а в столбце «клиент» я хочу показать имя клиента, а не идентификатор, потому что идентификатор ничего не значит для человека, который собирается просматривать стол.
По какой-то причине я не могу заставить его работать. Я гуглил и исследовал, как сделать это безуспешно .. поэтому я надеюсь, что смогу получить ответ здесь о том, что я делаю неправильно.
Это моя установка:
Project.php
<?php namespace App\models;
use Illuminate\Database\Eloquent\Model;
class Project extends Model {
protected $table = 'projects';
protected $fillable = [
'customer_id', 'user_owner', 'user_project_leader' , 'name', 'description', 'status', 'offered_price',
'estimate', 'project_start', 'deadline', 'free_text', 'total_price', 'created_at', 'updated_at'
];
public function customer()
{
return $this->hasOne('Customer');
}
}
Customer.php
<?php namespace App\models;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model {
protected $table = 'customers';
protected $fillable = [
'name', 'reference_person', 'created_at', 'updated_at'
];
}
ProjectsController.php
public function index(){
$projects = Project::with('customer')->get();
return view('projects.index', compact('projects'));
}
И, наконец, мой index.php
@foreach($projects as $project)
<tr>
<td>{{ $project->name }}</td>
<td>{{ $project->user_owner }}</td>
@foreach($project->customer as $pcustomer)
<td>{{ $pcustomer->name }}</td>
@endforeach
<td>{{ $project->deadline }}</td>
<td>{{ $project->offered_price }}</td>
<td> 00h</td>
</tr>
@endforeach
Я получаю сообщение об ошибке «Клиент класса не найден». Когда он явно есть в моей папке и используется в других целях.
Во-первых, убедитесь, что вы запускаете composer dump-autoload
,
Второе — я думаю, вам нужно использовать:
return $this->hasOne('\App\models\Customer');
в вашем отношении
Других решений пока нет …