我正在使用 Blade 視圖編寫 Laravel 7 應(yīng)用程序。我的一個 MySQL 表包含不遵循特定模式的客戶端tools(id重組這些 id 不在討論范圍內(nèi),因為它們來自客戶端不會更改的另一個系統(tǒng))。其中一些 ID 具有前導(dǎo)零,應(yīng)該在所有視圖中顯示,例如 055A。id 在數(shù)據(jù)庫中存儲時帶有前導(dǎo)零 (varchar(64)),沒有問題。edit但是,當(dāng)?shù)镀晥D顯示 id 時,前導(dǎo)零消失了,而且,與和deleteis 的鏈接會myapp/public/tool/5A5/edit導(dǎo)致錯誤 ofc。我的方法是顯示 id,<td>{{ sprintf('%04d', $tool->id) }}</td>但并非所有 id 都有 4 個字符,并且鏈接仍然類似于myapp/public/tool/5A5/edit,因為 Blade 獲取整個$tool對象。這是我的觀點:@foreach($tools as $tool)<tr> <td>{{ sprintf('%04d', $tool->id) }}</td> //not enough! <td>{{ $tool->title }}</td> <td style="text-align: center;">{{ $tool->tooltype->name }}</td> @can('manage-tools', App\User::class) <td class="td-actions text-right"> <form action="{{ route('tool.destroy', $tool) }}" method="post"> @csrf <a rel="tooltip" class="btn btn-success btn-link" href="{{ route('tool.edit', $tool) }}" data-original-title="" title=""> <i class="material-icons">edit</i> <div class="ripple-container"></div> </a> @method('delete') <button type="button" value="disabled" disabled class="btn btn-danger btn-link" data-original-title="" title="delete" onclick="confirm('{{ __("Wirklich l?schen?") }}') ? this.parentElement.submit() : ''"> <i class="material-icons">close</i> <div class="ripple-container"></div> </button> </form> </td> @endcan</tr>@endforeach從我的工具控制器:public function index(Tool $model){ $this->authorize('manage-tools', User::class); return view('tools.index',['tools' => $model->get()]); }
2 回答

縹緲止盈
TA貢獻(xiàn)2041條經(jīng)驗 獲得超4個贊
Laravel 會在幕后做一些“魔術(shù)”來優(yōu)雅地處理 id 字段,例如去除前導(dǎo)零。由于在大多數(shù)情況下模型 ID 都會遞增,因此默認(rèn)情況下會出現(xiàn)此行為。您可以在沒有遞增 id 字段的模型上使用以下設(shè)置來禁用此行為。在你的情況下:
class Tool extends Model
{
public $incrementing = false;
....

一只甜甜圈
TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊
對于那些必須在雙胡子內(nèi)保留前導(dǎo)零的人,請注意這里。我正在使用 Laravel 8,通過添加protected $casts = ['id_column_name' => 'array']
可以幫助我防止刀片刪除前導(dǎo)零,因此編輯頁面的鏈接可以正常工作。
- 2 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報
0/150
提交
取消