Tôi có hai Loại nội dung nút loại_a
và loại_b
Tôi có một trường được gọi là trường_tác_giả
Trong loại_a
đó là trường tham chiếu thực thể đến loại_b
với số lượng không giới hạn.
Làm cách nào để cập nhật trường_tác_giả
theo chương trình.
Tôi cũng cần Kiểm tra xem giá trị đã tồn tại trong trường chưa, nếu tồn tại thì hãy thêm giá trị mới trong khi cập nhật giá trị trường nếu không thì chỉ cần gán giá trị.
Tôi đã thử các biến thể dưới đây nhưng có vẻ như không có biến thể nào hoạt động.
$author_object->set('field_author_profile', $author_profile_nid);
$author_object->field_author_profile = ['target_id' => $author_profile_nid];
$author_object->field_author_profile->entity->target_id->value = $author_profile_nid;
$author_object->field_author_profile[] = ['target_id' => $author_profile_nid];
$author_object->field_author_profile->target_id = $author_profile_nid;
$author_object->get('field_author_profile')->setValue(['target_id' => $author_profile_nid]);
Đã lưu nút sau này bằng cách sử dụng
$author_object->save();
Chỉnh sửa : Giá trị trường không được hiển thị trong biểu mẫu chỉnh sửa nút, thậm chí còn được cho là có trong cơ sở dữ liệu. Đó là do loại gói được chọn sai trong trường tham chiếu thực thể. Sau khi nó được sửa chữa, nó hoạt động như mong đợi.
Đây là giải pháp làm việc.
$author_object->field_author_profile[] = ['target_id' => $author_profile_nid];