rappasoft/laravel-livewire-tables

[Bug]: Relationship not working if we have multiple relationship with same table

MalikUmair001 opened this issue · 7 comments

What happened?

public function seller()
{
return $this->belongsTo(User::class, 'seller_id')->withTrashed();
}

/**
 * Get order items
 *
 * @return object
 */
public function items()
{
    return $this->hasMany(OrderItem::class, 'order_id');
}

Column::make("Buyer", "buyer.email")
            // ->view('datatable.views.orders.table-order-buyer')
            ->sortable(),

        Column::make("Seller", "seller.email")
            // ->view('datatable.views.orders.table-order-seller')
            ->sortable(),

It returns same value for both columns

How to reproduce the bug

public function seller()
{
return $this->belongsTo(User::class, 'seller_id')->withTrashed();
}

/**
 * Get order items
 *
 * @return object
 */
public function items()
{
    return $this->hasMany(OrderItem::class, 'order_id');
}

Column::make("Buyer", "buyer.email")
            // ->view('datatable.views.orders.table-order-buyer')
            ->sortable(),

        Column::make("Seller", "seller.email")
            // ->view('datatable.views.orders.table-order-seller')
            ->sortable(),

It returns same value for both columns

Package Version

No response

PHP Version

None

Laravel Version

No response

Alpine Version

No response

Theme

None

Notes

No response

Error Message

No response

/**
* Get buyer
*
* @return object
*/
public function buyer()
{
return $this->belongsTo(User::class, 'buyer_id')->withTrashed();
}

/**
 * Get seller
 *
 * @return object
 */
public function seller()
{
    return $this->belongsTo(User::class, 'seller_id')->withTrashed();
}

So I suspect it's due to how the package creates the joins dynamically.

Please confirm which version of the Tables Package, Laravel, Livewire you're using

Can you please also share:

  1. The full code for your Table Component
  2. The relevant elements from the Model that is being used in the Table as the "primary model", (i.e. the relationships)

Please wrap it in the script tags (three ` marks)

I can then try to replicate it on my end and give you some options, or fix any bugs.

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale commented

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

lrljoe commented

Need the aforementioned to be able to offer guidance on this one...

lrljoe commented

Noting that something as simple (assuming a "Sales" model, and a "buyer_id", and "seller_id") with a belongsTo relation for "seller" and "buyer" will work smoothly:

    public function columns(): array
    {
        return [
            Column::make('Seller', 'seller.name')->sortable(),
            Column::make('Buyer', 'buyer.name')->sortable(),
            Column::make('Stuff', 'stuff')->sortable(),
        ];
    }
lrljoe commented

I think the problem here is likely how you've structured your table to be honest.

Make sure that you select the most appropriate model to base your table on.

E.g.

If you want to display Sale Items (with a buyer/seller), then base it on Sale Items, don't base it on Sales.