Anda dapat melakukannya melalui koleksi:
Pertama, Anda perlu menyuntikkan CategoryFactory
konstruktor kelas Anda.
Magento 2.0 & 2.1:
public function __construct(
...
\Magento\Catalog\Model\CategoryFactory $categoryFactory
) {
$this->_categoryFactory = $categoryFactory;
parent::__construct(...);
}
Kemudian di tempat lain di kelas Anda yang dapat Anda lakukan:
$collection = $this->_categoryFactory->create()->getCollection()->addAttributeToFilter('name',$categoryTitle)->setPageSize(1);
if ($collection->getSize()) {
$categoryId = $collection->getFirstItem()->getId();
}
Magento 2.2:
public function __construct(
...
\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $collecionFactory
) {
$this->_collectionFactory = $collecionFactory;
parent::__construct(...);
}
Kemudian di tempat lain di kelas Anda yang dapat Anda lakukan:
$collection = $this->collecionFactory
->create()
->addAttributeToFilter('name',$categoryTitle)
->setPageSize(1);
if ($collection->getSize()) {
$categoryId = $collection->getFirstItem()->getId();
}
Raphael di Digital Pianism
sumber
Ini dapat dilakukan dengan menggunakan kontrak layanan yang dianggap sebagai praktik terbaik.
sumber
Anda dapat melakukannya dengan sederhana
name
,sumber
Coba Kode Di Bawah Ini Untuk File Phtml:
sumber
Saya mendapatkannya dengan bantuan dari kolase saya
:) Karena koleksi hanya akan mengembalikan catatan yang Anda inginkan, Anda dapat mengambil satu-satunya hasil dengan
->getFirstItem()
pada kode di atassumber
Untuk memperbaiki itu dalam skrip yang berfungsi saya sarankan menggunakan yang berikut ini
Sunting: Saya membuat dan menguji sebuah skrip. Saya membuat file di /scripts/file.php
sumber
Saya berhasil menulis metode saya sendiri (lebih efisien):
Kode ini cache semua judul: id ke dalam array, dan hanya kueri 2 kali.
Bekerja untukku. Lebih mudah digunakan!
sumber
Pertama, Anda perlu menyuntikkan kelas koleksi pabrik
Setelah itu di dalam metode Anda, Anda bisa melakukan ini,
sumber