Laravel factory define reference other cloumn

Laravel factory define (定義) 時參照當下其它欄位

假設

  • mode MyJob
  • mode CoWorker

其中 MyJob 所含欄位為

id -  int
co_worker_id - int
co_worker_name - varchar

其中 CoWorker 所含欄位為

id -  int
name - varchar

可以透過 closure function,取得當下其它欄位的值做為參照
以下範例在建立 co_worker_name 內容時透過 closure 取得 co_worker_id

$factory->define(
    MyJob::class, 
    function () {
        return [
            'co_worker_id' => factory(CoWorker::class),
            'co_worker_name' => function (array $myJob)  {
                return CoWorker::find($myJob['co_worker_id'])->name;
            },
        ];
    }
);

當然,可以在 define 的 return 前
先把 factory(CoWorker::class) 賦值後再處理;不過在特定情況下,是需要上述方式處理的