Laravel hasmany функция ничего не возвращает - PullRequest
0 голосов
/ 13 июня 2018

Когда у меня есть несколько без выбора, он возвращает все поля из таблицы userTrancastion

Invoicemodule.php

$invoice = UserInvoiceDetail::with('transaction')
            ->select('Id','UserId','TotalPrice')
            ->where('UserId','=',$playerId)
            ->get();
            return $invoice;

UserInvoiceDetail.php

class UserInvoiceDetail extends Model
{
    protected $table = 'user_invoice_details';
    protected $primaryKey ='Id';
    public function transaction() 
    {
        return $this->hasMany(UserTransaction::class, 'InvoiceId');
    }
}

Выходные данные

"Invoices": 
[
        {
            "Id": 1,
            "UserId": 5,
            "TotalPrice": 110,
            "transaction": [
                {
                    "Id": 1,
                    "InvoiceId": 1,
                    "UserId": 5,
                    "ReferenceTransactionId": null,
                    "CategoryId": 1,
                    "ProductId": 140,
                    "Price": 5,
                    "Quantity": 5,
                    "CustomerId": 1,
                },
                {
                    "Id": 2,
                    "InvoiceId": 1,
                    "UserId": 5,
                    "ReferenceTransactionId": null,
                    "CategoryId": 2,
                    "ProductId": 3,
                    "Price": 15,
                    "Quantity": 3,
                    "CustomerId": 1,
                }
            ]
        }
]

Но если я использую много с select, он ничего не возвращает в таблице userTrancastion

UserInvoiceDetail.php

class UserInvoiceDetail extends Model
{
    protected $table = 'user_invoice_details';
    protected $primaryKey ='Id';

    public function transaction() 
    {
        return $this->hasMany(UserTransaction::class, 'InvoiceId')->select('user_transactions.Id','user_transactions.ProductId');
    }

}

Вывод

"Invoices": [
    {
        "Id": 1,
        "UserId": 5,
        "TotalPrice": 110,
        "transaction": []
    },
    {
        "Id": 2,
        "UserId": 5,
        "TotalPrice": 110,
        "transaction": []
    }
]

почему это происходит, я хочу использовать функцию join в транзакции (), поэтому мне нужны только выборочные поля.Как можно использовать select с hasmany ()?Заранее спасибо.

1 Ответ

0 голосов
/ 13 июня 2018

Отношение нужно к столбцу, к которому оно относится, поэтому добавьте также InvoiceId, не нужно добавлять user_transactions

public function transaction() 
{
    return $this->hasMany(UserTransaction::class, 'InvoiceId')->select('Id','ProductId','InvoiceId');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...