1. Go to this page and download the library: Download ang3/php-odoo-api-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ang3 / php-odoo-api-client example snippets
-xmlrpc
ng3\Component\Odoo\Client;
// Option 1: by calling the constructor...
$client = new Client('<host>', '<database>', '<username>', '<password>', $logger = null);
// Option 2 : by calling the static method ::createFromConfig() with configuration as array
$client = Client::createFromConfig([
'url' => '<host>',
'database' => '<database>',
'username' => '<user>',
'password' => '<password>',
], $logger = null);
use Ang3\Component\Odoo\DBAL\RecordManager;
/** @var \Ang3\Component\Odoo\Client $myClient */
$recordManager = new RecordManager($myClient);
use Ang3\Component\Odoo\DBAL\Expression\DomainInterface;
/**
* Create a new record.
*
* @return int the ID of the new record
*/public function create(string $modelName, array $data): int;
/**
* Update record(s).
*
* NB: It is not currently possible to perform “computed” updates (by criteria).
* To do it, you have to perform a search then an update with search result IDs.
*
* @param array|int $ids
*/
public function update(string $modelName, $ids, array $data = []): void;
/**
* Delete record(s).
*
* NB: It is not currently possible to perform “computed” deletes (by criteria).
* To do it, you have to perform a search then a delete with search result IDs.
*
* @param array|int $ids
*/
public function delete(string $modelName, $ids): void;
/**
* Search one ID of record by criteria.
*/
public function searchOne(string $modelName, ?DomainInterface $criteria): ?int;
/**
* Search all ID of record(s).
*
* @return int[]
*/
public function searchAll(string $modelName, array $orders = [], int $limit = null, int $offset = null): array;
/**
* Search ID of record(s) by criteria.
*
* @return int[]
*/
public function search(string $modelName, ?DomainInterface $criteria = null, array $orders = [], int $limit = null, int $offset = null): array;
/**
* Find ONE record by ID.
*
* @throws RecordNotFoundException when the record was not found
*/
public function read(string $modelName, int $id, array $fields = []): array;
/**
* Find ONE record by ID.
*/
public function find(string $modelName, int $id, array $fields = []): ?array;
/**
* Find ONE record by criteria.
*/
public function findOneBy(string $modelName, ?DomainInterface $criteria = null, array $fields = [], array $orders = [], int $offset = null): ?array;
/**
* Find all records.
*
* @return array[]
*/
public function findAll(string $modelName, array $fields = [], array $orders = [], int $limit = null, int $offset = null): array;
/**
* Find record(s) by criteria.
*
* @return array[]
*/
public function findBy(string $modelName, ?DomainInterface $criteria = null, array $fields = [], array $orders = [], int $limit = null, int $offset = null): array;
/**
* Check if a record exists.
*/
public function exists(string $modelName, int $id): bool;
/**
* Count number of all records for the model.
*/
public function countAll(string $modelName): int;
/**
* Count number of records for a model and criteria.
*/
public function count(string $modelName, ?DomainInterface $criteria = null): int;
/**
* Defines the query of type "SELECT" with selected fields.
* No fields selected = all fields returned.
*
* @param array|string|null $fields
*/
public function select($fields = null): self;
/**
* Defines the query of type "SEARCH".
*/
public function search(): self;
/**
* Defines the query of type "INSERT".
*/
public function insert(): self;
/**
* Defines the query of type "UPDATE" with ids of records to update.
*
* @param int[] $ids
*/
public function update(array $ids): self;
/**
* Defines the query of type "DELETE" with ids of records to delete.
*/
public function delete(array $ids): self;
/**
* Adds a field to select.
*
* @throws LogicException when the type of the query is not "SELECT".
*/
public function addSelect(string $fieldName): self;
/**
* Gets selected fields.
*/
public function getSelect(): array;
/**
* Sets the target model name.
*/
public function from(string $modelName): self;
/**
* Gets the target model name of the query.
*/
public function getFrom(): ?string;
/**
* Sets target IDs in case of query of type "UPDATE" or "DELETE".
*
* @throws LogicException when the type of the query is not "UPDATE" nor "DELETE".
*/
public function setIds(array $ids): self;
/**
* Adds target ID in case of query of type "UPDATE" or "DELETE".
*
* @throws LogicException when the type of the query is not "UPDATE" nor "DELETE".
*/
public function addId(int $id): self;
/**
* Sets field values in case of query of type "INSERT" or "UPDATE".
*
* @throws LogicException when the type of the query is not "INSERT" nor "UPDATE".
*/
public function setValues(array $values = []): self;
/**
* Set a field value in case of query of type "INSERT" or "UPDATE".
*
* @param mixed $value
*
* @throws LogicException when the type of the query is not "INSERT" nor "UPDATE".
*/
public function set(string $fieldName, $value): self;
/**
* Gets field values set in case of query of type "INSERT" or "UPDATE".
*/
public function getValues(): array;
/**
* Sets criteria for queries of type "SELECT" and "SEARCH".
*
* @throws LogicException when the type of the query is not "SELECT" not "SEARCH".
*/
public function where(?DomainInterface $domain = null): self;
/**
* Takes the WHERE clause and adds a node with logical operator AND.
*
* @throws LogicException when the type of the query is not "SELECT" nor "SEARCH".
*/
public function andWhere(DomainInterface $domain): self;
/**
* Takes the WHERE clause and adds a node with logical operator OR.
*
* @throws LogicException when the type of the query is not "SELECT" nor "SEARCH".
*/
public function orWhere(DomainInterface $domain): self;
/**
* Gets the WHERE clause.
*/
public function getWhere(): ?DomainInterface;
/**
* Sets orders.
*/
public function setOrders(array $orders = []): self;
/**
* Clears orders and adds one.
*/
public function orderBy(string $fieldName, bool $isAsc = true): self;
/**
* Adds order.
*
* @throws LogicException when the query type is not valid.
*/
public function addOrderBy(string $fieldName, bool $isAsc = true): self;
/**
* Gets ordered fields.
*/
public function getOrders(): array;
/**
* Sets the max results of the query (limit).
*/
public function setMaxResults(?int $maxResults): self;
/**
* Gets the max results of the query.
*/
public function getMaxResults(): ?int;
/**
* Sets the first results of the query (offset).
*/
public function setFirstResult(?int $firstResult): self;
/**
* Gets the first results of the query.
*/
public function getFirstResult(): ?int;
$query = $queryBuilder->getQuery();
/**
* Counts the number of records from parameters.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @throws QueryException on invalid query method.
*/
public function count(): int;
/**
* Gets just ONE scalar result.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @return bool|int|float|string
*
* @throws NoUniqueResultException on no unique result
* @throws NoResultException on no result
* @throws QueryException on invalid query method.
*/
public function getSingleScalarResult();
/**
* Gets one or NULL scalar result.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @return bool|int|float|string|null
*
* @throws NoUniqueResultException on no unique result
* @throws QueryException on invalid query method.
*/
public function getOneOrNullScalarResult();
/**
* Gets a list of scalar result.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @throws QueryException on invalid query method.
*
* @return array<bool|int|float|string>
*/
public function getScalarResult(): array;
/**
* Gets one row.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @throws NoUniqueResultException on no unique result
* @throws NoResultException on no result
* @throws QueryException on invalid query method.
*/
public function getSingleResult(): array;
/**
* Gets one or NULL row.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @throws NoUniqueResultException on no unique result
* @throws QueryException on invalid query method.
*/
public function getOneOrNullResult(): ?array;
/**
* Gets all result rows.
* Allowed methods: SEARCH, SEARCH_READ.
*
* @throws QueryException on invalid query method.
*/
public function getResult(): array;
/**
* Execute the query.
* Allowed methods: all.
*
* @return mixed
*/
public function execute();
namespace App\Odoo\Repository;
use Ang3\Component\Odoo\DBAL\RecordManager;
use Ang3\Component\Odoo\DBAL\Repository\RecordRepository;
class CompanyRepository extends RecordRepository
{
public function __construct(RecordManager $recordManager)
{
parent::__construct($recordManager, 'res.company');
}
public function findFrenchCompanies(): array
{
return $this
->createQueryBuilder()
->select('name')
->where($this->expr()->eq('country_id.code', 'FR'))
->getQuery()
->getResult();
}
}
/**
* Create a logical operation "AND".
*/
public function andX(DomainInterface ...$domains): CompositeDomain;
/**
* Create a logical operation "OR".
*/
public function orX(DomainInterface ...$domains): CompositeDomain;
/**
* Create a logical operation "NOT".
*/
public function notX(DomainInterface ...$domains): CompositeDomain;
/**
* Check if the field is EQUAL TO the value.
*
* @param mixed $value
*/
public function eq(string $fieldName, $value): Comparison;
/**
* Check if the field is NOT EQUAL TO the value.
*
* @param mixed $value
*/
public function neq(string $fieldName, $value): Comparison;
/**
* Check if the field is UNSET OR EQUAL TO the value.
*
* @param mixed $value
*/
public function ueq(string $fieldName, $value): Comparison;
/**
* Check if the field is LESS THAN the value.
*
* @param mixed $value
*/
public function lt(string $fieldName, $value): Comparison;
/**
* Check if the field is LESS THAN OR EQUAL the value.
*
* @param mixed $value
*/
public function lte(string $fieldName, $value): Comparison;
/**
* Check if the field is GREATER THAN the value.
*
* @param mixed $value
*/
public function gt(string $fieldName, $value): Comparison;
/**
* Check if the field is GREATER THAN OR EQUAL the value.
*
* @param mixed $value
*/
public function gte(string $fieldName, $value): Comparison;
/**
* Check if the variable is LIKE the value.
*
* An underscore _ in the pattern stands for (matches) any single character
* A percent sign % matches any string of zero or more characters.
*
* If $strict is set to FALSE, the value pattern is "%value%" (automatically wrapped into signs %).
*
* @param mixed $value
*/
public function like(string $fieldName, $value, bool $strict = false, bool $caseSensitive = true): Comparison;
/**
* Check if the field is IS NOT LIKE the value.
*
* @param mixed $value
*/
public function notLike(string $fieldName, $value, bool $caseSensitive = true): Comparison;
/**
* Check if the field is IN values list.
*/
public function in(string $fieldName, array $values = []): Comparison;
/**
* Check if the field is NOT IN values list.
*/
public function notIn(string $fieldName, array $values = []): Comparison;
// Get the expression builder
$expr = $recordManager->expr();
// Prepare data for a new record
$data = [
'foo' => 'bar',
'bar_ids' => [ // Field of type "manytoMany"
$expr->addRecord(3), // Add the record of ID 3 to the set
$expr->createRecord([ // Create a new sub record and add it to the set
'bar' => 'baz'
// ...
])
]
];
$result = $recordManager->create('model_name', $data);
/**
* Adds a new record created from data.
*/
public function createRecord(array $data): CollectionOperation;
/**
* Updates an existing record of id $id with data.
* /!\ Can not be used in record CREATE query.
*/
public function updateRecord(int $id, array $data): CollectionOperation;
/**
* Adds an existing record of id $id to the collection.
*/
public function addRecord(int $id): CollectionOperation;
/**
* Removes the record of id $id from the collection, but does not delete it.
* /!\ Can not be used in record CREATE query.
*/
public function removeRecord(int $id): CollectionOperation;
/**
* Removes the record of id $id from the collection, then deletes it from the database.
* /!\ Can not be used in record CREATE query.
*/
public function deleteRecord(int $id): CollectionOperation;
/**
* Replaces all existing records in the collection by the $ids list,
* Equivalent to using the command "clear" followed by a command "add" for each id in $ids.
*/
public function replaceRecords(array $ids = []): CollectionOperation;
/**
* Removes all records from the collection, equivalent to using the command "remove" on every record explicitly.
* /!\ Can not be used in record CREATE query.
*/
public function clearRecords(): CollectionOperation;
$data
OR
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.