I am creating a extbase typo3 11.5 extension, that updates jobs in a database with a Scheduler Task ImportJobsTask.
namespace MyCompany\MyExtension\Task;
class ImportJobsTask extends AbstractTask
{
public function __construct()
{
parent::__construct();
}
public function execute()
{
$this->jobOfferRepository = GeneralUtility::makeInstance(JobOfferRepository::class);
$job = ['id' => 253, 'title' => 'Lagermitarbeiter'];
$job = $this->jobOfferRepository->findByJob($job);
DebuggerUtility::var_dump($job);
return true;
}
}
For that i use a JobsOfferRepository.
declare(strict_types=1);
namespace MyCompany\MyExtension\Domain\Repository;
class JobOfferRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
public function findByJob(array $job)
{
$query = $this->createQuery();
$constraints = [
$query->equals('job_id', $job["id"]),
$query->equals('job_title', $job["title"]),
];
$query->matching($query->logicalAnd($constraints));
return $query->execute()->getFirst();
}
}
In this Repository i call from the Model JobOffers the functions updateJob($job_id) and createJob($job) for updating and creating such Jobs, these works fine.
declare(strict_types=1);
namespace MyCompany\MyExtension\Domain\Model;
class JobOffer extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
public function createJob(array $job, int $pid): JobOffer
{
$newJob = new self();
$newJob->setPid($pid);
$newJob->setJobId($job["id"]);
$newJob->setJobTitle($job["title"]);
# some code...
return $newJob;
}
But in my Task i just can't get any results from findByJob($job), it always returns NULL. Everything i try to get some jobs from inside of my Repository always returns NULL.
On the other hand i can store new Jobs from the Repository, if i call $jobOffer->createJob($job) from there.
I implemented a setPid() function in the Repository to make sure the storagePid is correct, but the result didn't change.
Somebody has an idea, what i might be missing? Some configuration? Messed up Namespace?
Ok, i found my answer.
i implemented a function
setPID($pids)in my Repository, than everything worked. The other problems were from bad testing.in my Task's
execute():In my Repository:
That was all i needed. I guess the debugging part would have worked with Garvin's answer, too. But maybe my testing was so off that i didnt realize. i tried with
var_dumpinstead ofDebuggerUtility::var_dump($object)and got out of memory, which i misinterpreted. yes, i am a typo3 beginner :-)