У меня есть 3 стола: company
< ->users
< ->invoice
.Laravel 5 hasManyThore
Компания hasMany
пользователей.
Пользователь belongsTo
компания и, и пользователь hasMany
фактуры.
Счет belongsTo
пользователь.
Теперь у меня есть счет-фактура с информацией о пользователе (клиента), и я хочу, чтобы пользователь его информацию о компании, так что я сделал:
счета-фактуры hasManyThrough
пользователей, компания (так получает компанию через пользователь)
Теперь это не работает, поскольку это необходимо.
Модель:
class Company extends Eloquent {
protected $table = 'companies';
public function users()
{
return $this->hasMany('App\User', 'id');
}
public function invoices()
{
return $this->hasManyThrough('App\Company', 'App\User');
}
}
class User extends Model {
protected $table = 'users';
public function usertype()
{
return $this->belongsTo('App\UserType','usertype_id','id');
}
public function company()
{
return $this->belongsTo('App\Company','company_id','id');
}
public function invoice()
{
return $this->hasMany('App\Invoice');
}
}
class Invoice extends Model {
protected $table = 'invoices';
public function users() {
return $this->belongsTo('App\User', 'id');
}
}
Счет контроллер:
class InvoiceController extends Controller {
private $invoice;
public function __construct(Invoice $invoice)
{
$this->invoice = $invoice;
}
public function index(Invoice $invoice)
{
$invoices = $invoice->with('users', 'company')->get();
dd($invoices);
return view('invoice.index', compact('invoices'));
}
public function create()
{
//
}
public function store()
{
}
public function show($id)
{
$invoice = Invoice::with('users')->find($id);
return view('invoice.show', compact('invoice'));
}
public function edit($id)
{
//
}
public function update($id)
{
//
}
public function destroy($id)
{
//
}
}
д.Д. ($ счетов) даст может быть предоставлена BadMethodCallException Call to undefined method Illuminate\Database\Query\Builder::company()
Дальнейших необходимой информация!
Должен ли я использовать области запроса или просто отношения? – Liam
@Synyster вам не нужно использовать области, но они очень рекомендуются, так как без них вы будете повторять этот мир кода везде, где вы его используете.Однако самая важная область в этом примере, если «scopeWithChaptersAndVideos», если вы хотите иметь свои результаты без использования области, должна будет написать свой контент и заменить «withVideos» содержимым этой области, а также из модели видео. –