Sahkan anotasi kekangan medan terhadap medan lain
P粉321676640
2023-07-23 17:52:28
<p>Saya mempunyai kelas entiti ini dalam Symfony/5.4:</p>
<pre class="brush:php;toolbar:false;">gunakan DoctrineORMMapping sebagai ORM;
gunakan SymfonyComponentValidatorConstraints sebagai Assert;
Tugasan kelas
{
const awam GAJI_RANGKA = [
'Merah',
'Hijau',
null,
];
/*** @ORMColumn(panjang=255, nullable=true)
* @AssertChoice(choices=Assignments::SALARY_RANGES, strict=true)*/
persendirian ?rentetan $gajiJulat;
/*** @ORMManyToOne(targetEntity="Pekerja", inversedBy="tugasan")
* @ORMJoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")*/
swasta ?Pekerja $pekerja;
}</pre>
<p>Saya perlu memastikan bahawa jika pekerja tidak batal, maka julat gaji mempunyai nilai bukan batal dan begitu juga sebaliknya. Adakah mungkin untuk menggunakan anotasi kekangan untuk menguatkuasakan keperluan ini?</p>
<p>Saya telah cuba menggunakan @AssertCallback tetapi saya tidak dapat mengetahui cara untuk mendapatkan nilai medan lain. Mungkin ia bukan alat yang betul. </p>
<pre class="brush:php;toolbar:false;">/*** @AssertCallback({"ExampleValidator", "assertEmployeeOnlyCallback"})*/</pre>
<pre class="brush:php;toolbar:false;">public static function assertEmployeeOnlyCallback(mixed $data, ExecutionContextInterface $context): batal
{
// `$data` mengandungi nilai daripada `salaryRange` tetapi, di manakah `pekerja`?
}</pre>
<p><br /></p>
Ikuti dokumentasi sahaja.
https://symfony.com/doc/5.3/reference/constraints/Callback.html