我在學校的在線學習網站專案中使用 easyadmin。教師可以添加編隊、編隊附屬的部分和屬于部分的課程。我為每個設定了三個 crud,并進行了查詢,因此登錄的用戶只能看到他們創建的內容。
問題是在添加新條目時,easyadmin 沒有在資料庫中設定登錄的 user_id,我收到以下錯誤:執行查詢時發生例外:SQLSTATE [23000]:完整性約束違規:1048 列'user_id' 不能為空
我知道它來自哪里,你不能在沒有 user_id 的情況下向資料庫添加一個條目,因為它不能為空,但我似乎找不到可以設定 easyadmin 的位置,因此它總是在添加新條目時傳遞 user_id . 您可以在某處編輯添加操作嗎?
謝謝!
uj5u.com熱心網友回復:
如下面的檔案示例代碼所示,您需要$this->getUser()在您的方法中手動設定物體上的用戶(當前登錄的用戶由回傳)AbstractCrudController::createEntity。
// src: https://symfony.com/bundles/EasyAdminBundle/current/crud.html#creating-persisting-and-deleting-entities
// copied: 2022-04-13
namespace App\Controller\Admin;
use App\Entity\Product;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
class ProductCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Product::class;
}
public function createEntity(string $entityFqcn)
{
$product = new Product();
$product->createdBy($this->getUser());
return $product;
}
// ...
}
uj5u.com熱心網友回復:
我們缺少資訊。但我的猜測是您忘記在 CrudController 的 setFields() 方法中添加id欄位:
public function setFields(): iterable {
yield IdField::new('id')->onlyOnDetail();
// ...
}
該onlyOnDetail()方法在 CRUD 的索引、新建和編輯頁面上隱藏 id,同時仍然允許 EasyAdmin 在您創建新物體時設定 id 屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460452.html
下一篇:url有效但視圖未加載
