मेरे पास 3 टेबल हैं: company
< ->users
< ->invoice
।लैरवेल 5 है मैनी थ्रू
एक कंपनी 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)
{
//
}
}
dd ($ चालान) दे देंगे एक BadMethodCallException Call to undefined method Illuminate\Database\Query\Builder::company()
किसी भी आगे आवश्यक जानकारी प्रदान की जा सकती है!
क्या मुझे क्वेरी स्कोपों के साथ-साथ संबंधों का भी उपयोग करना है? – Liam
@ सिनस्टर आपको स्कॉप्स का उपयोग करने की ज़रूरत नहीं है लेकिन उन्हें बहुत अनुशंसा की जाती है, क्योंकि उनके बिना आप कोड का यह शांति हर जगह इस्तेमाल करेंगे।हालांकि इस उदाहरण में सबसे महत्वपूर्ण दायरा यदि 'स्कोपविथ चैप्टर एंडविडियो' यदि आप स्कोप का उपयोग किए बिना अपने परिणाम प्राप्त करना चाहते हैं तो उसे अपनी सामग्री लिखनी होगी और उस वीडियो के मॉडल के साथ 'विडियो' को उस दायरे की सामग्री के साथ बदलना होगा। –