简体   繁体   中英

how to access a function from model file

im using laravel 7.24 and php 7.4 on my project What i want to is fundementally creating relations between 3 table and using them in 'one' query. to be specific i need to access 'ordered products' from my order detail page.

public function orderdetail($id)
{   //certainorder model access to 'ShoppingCard'model from below
    $orderDetails  = CertainOrder::with('ShoppingCard.shoppingCardProducts.product')
    ->where('ShoppingCard.id' , $id)->firstorFail();
    return view('orderdetails', compact ('orderDetails'));
}

CertainOrder model access to 'ShoppingCard' model from top and in the ShoppingCard model it contains shoppingCardProducts function which you will see in below and with shoppingCardProducts function my 'products' table had a relation. the problem is something in relations is wrong and i can't get data from shoppingcardproduct

class ShoppingCard extends Model
{
protected $table = "shopping_card";

protected $fillable = ['id', 'user_id', 'created_at','updated_at'];

public function shoppingCardProducts()
{
    return $this->hasMany('App\ShoppingCardProduct');
}
    class CertainOrder extends Model
    {
    protected $table = "certain_orders";
    protected $guarded = [];


    public function shoppingCard()
    {
        return $this->belongsTo(ShoppingCard::class, 'sepet_id');
        //sepet_id is a foreign key.
    }
class ShoppingCardProduct extends Model
 {
use SoftDeletes;

protected $table = "shopping_card_product";

protected $fillable = ['id', 'sepet_id', 'urun_id','quantity','price','status','created_at','updated_at','deleted_at'];


public function product()
{
    return $this->belongsTo('App\Product');
}

 

I think you missed it somewhere in the code

 class ShoppingCard extends Model
{
protected $table = "shopping_card";

protected $fillable = ['id', 'user_id', 'created_at','updated_at'];

public function shoppingCardProducts()
{
    return $this->hasMany('App\ShoppingCardProduct');
}

public function CertainOrder(){
    return $this->hasMany('path\to\model');
}

public function ShoppingCardProduct(){
    return $this->hasMany('path\to\model');
}
}

    class CertainOrder extends Model
    {
    protected $table = "certain_orders";
    protected $guarded = [];


    public function shoppingCard()
    {
        return $this->belongsTo('App\path\to\model', 'sepet_id');
        //sepet_id is a foreign key.
    }
}

class ShoppingCardProduct extends Model
 {
use SoftDeletes;

protected $table = "shopping_card_product";

protected $fillable = ['id', 'sepet_id', 'urun_id','quantity','price','status','created_at','updated_at','deleted_at'];


public function ShoppingCard()
{
    return $this->belongsTo('App\ShoppingCard');
}

}

and make the call this way

  public function orderdetail($id)
{   //certainorder model access to 'ShoppingCard'model from below
    $orderDetails  = ShoppingCard::with('CertainOrder, ShoppingCardProduct')
    ->where('id' , $id)->firstorFail();
    return view('orderdetails', compact ('orderDetails'));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM