gpt4 book ai didi

php - 从 laravel 中另一个表中 ID 为 json 格式的表中选择值

转载 作者:行者123 更新时间:2023-11-29 07:30:18 25 4
gpt4 key购买 nike

我有一个名为 journal_details 的表,它有一个名为 transaction_by_to 的列。我将 account_head_id 值保存为表 journal_detailstransaction_by_to 中的 json_encode 格式。现在我想运行一个选择查询以从 account_heads 中获取帐户负责人名称,其中 JSON 格式的 transaction_by_to id 将从 account_heads 中找到 id。在 Controller 中,我尝试了类似下面的方法,但它只有一个。但我想显示所有来自 account_heads 的所有 JSON 格式的 ID。

public function ledgerSubmit(Request $request)
{
$acId = $request->acount_head;
$startDate = Carbon::parse($request->start_date)->format('Y-m-d');
$endDate = Carbon::parse($request->end_date)->format('Y-m-d');
$reportType = $request->report_type;

$nameOfAccount = AccountHead::find($acId);
$ledgers = DB::table('journal_details')
->join('journals', 'journal_details.journal_id', '=', 'journals.id')
->join('account_heads', 'journal_details.account_head_id', '=', 'account_heads.id')
->where('journal_details.account_head_id', $acId)
->select('journals.number as journalNo', 'journals.journal_date as journalDate', 'journal_details.*', 'account_heads.name as nameOfAccount')
->get();

if (count($ledgers)) {
$transactionByToId = $ledgers[0]->transaction_by_to;

foreach (json_decode($transactionByToId) as $tId) {
$transactionByTo = AccountHead::where('id', $tId)->get();
}
}
return view('report.ledger.searched-result', compact('reportType', 'startDate', 'endDate', 'ledgers', 'transactionByTo', 'nameOfAccount'));
}

在 Blade View 中-

@foreach($ledgers as $ledger)
<tr>
<td>{{ $loop->index + 1 }}</td>
<td>{{ $ledger->journalNo }}</td>
<td>{{ date('jS F, Y', strtotime($ledger->journalDate)) }}</td>
<td>{{ $ledger->nameOfAccount }}</td>
<td>
{{ $transactionByTo[0]->name }}
</td>
<td>
{{ number_format($ledger->debit, 2,".",",") }}
</td>
<td>
{{ number_format($ledger->credit, 2,".",",") }}
</td>
</tr>
@endforeach

["16","17","7","11"]journal_details 中 json 格式的 transaction_by_to 列值这些 ID 是 account_heads 表的 id

最佳答案

您的代码中有几个错误,例如以下代码:

foreach (json_decode($transactionByToId) as $tId) {
$transactionByTo = AccountHead::where('id', $tId)->get();
}

它将始终保持单个值,即最后一个值。所以看起来只有一条记录。

但是你为什么不执行以下操作一次获取所有记录:

  $accountHeadIds = json_decode($transactionByToId, true);
$accountHeads = AccountHead::whereIn('id', $accountHeadIds)->get();

其次,我没有看到您正在处理不属于 $leders 的 View 文件中的 Account Head 变量(根据我的代码示例,$accountHeads) > 变量。如果你想把它放在 $ledgers 变量下,那么你应该把它存储在它下面。

注意:我没有测试上面的代码,但概念是相似的。

关于php - 从 laravel 中另一个表中 ID 为 json 格式的表中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com