Laravel 5.5:将查询生成器转换为 eloquent

Laravel 5.5: Convert query builder to eloquent

有没有办法将此查询生成器转换为 eloquent?

$transactions = DB::table('transactions')
    ->join('accounts', 'transactions.account_id', '=', 'accounts.id')
    ->select('transactions.*', 'accounts.name as account_name')
    ->paginate(5);

我用一对多试过了。但它需要 find() 功能,所以它给我一个帐户的交易,但我需要 select 所有与 accounts.name

的交易

您将需要使用模型来做到这一点。

  1. 交易模型和账户模型。

  2. 定义他们的关系

  3. 在事务模型中创建一个方法来检索相关的帐户名称。

    function accoutNames() { //blablabla }

  4. 在控制器中进行查询,类似这样:

    事务->accountNames();

在评论中,您说过您定义了一对多关系(我假设它的帐户有很多交易)并且您需要获取所有带有帐户名的交易,所以这样做:

Transaction::with('account')->paginate(5);

其中 account 是关系:

public function account()
{
    return $this->belongsTo(Account::class);
}

然后你就可以这样显示数据了:

@foreach ($transactions as $transaction)
    {{ $transaction->id }}
    {{ $transaction->account->name }}
@endforeach