Codeigniter 2 und Doctrine 2 HowTo 3/5
Ziel:
- Codeigniter 2 mit Doctrine 2 installieren
- Klasse erstellen und Datenbank anlegen
- Instanz einer Klasse erzeugen
- Containment Beziehung nutzen
- Containment Beziehung auslesen
3. Instanz einer Klasse erzeugen
Ziel: Anlegen einer Aufgabe:
* Controller: showdoctrine_main.php
* Viewer: start.php
Anpassen des Start-Controllers – Ordner „Application/config/routes.php“
Controller angelegen:
Controller: application/controller/showdoctrine_main.php
use models\Task;
class Showdoctrine_main extends CI_Controller {
public function add_task(){
$task = new \models\Task();
$task->setTitle("first");
$em = $this->doctrine->em;
$em->persist($task);
$em->flush();
$this->load->view('start');
}
public function index()
{
$this->load->view('start');
}
}
?>
Viewer anlegen:
application/view/start.php
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to CodeIgniter</title>
<style type="text/css">
body {
background-color: #fff;
margin: 40px;
font-family: Lucida Grande, Verdana, Sans-serif;
font-size: 14px;
color: #4F5155;
}
a {
color: #003399;
background-color: transparent;
font-weight: normal;
}
h1 {
color: #444;
background-color: transparent;
border-bottom: 1px solid #D0D0D0;
font-size: 16px;
font-weight: bold;
margin: 24px 0 2px 0;
padding: 5px 0 6px 0;
}
code {
font-family: Monaco, Verdana, Sans-serif;
font-size: 12px;
background-color: #f9f9f9;
border: 1px solid #D0D0D0;
color: #002166;
display: block;
margin: 14px 0 14px 0;
padding: 12px 10px 12px 10px;
}
</style>
</head>
<body>
<h1>Welcome to ShowDoctrine</h1>
<?php echo form_open("showdoctrine_main/add_task"); ?>
<input value="Task anlagen" type="submit">
<?php echo form_close(); ?>
</body>
</html>
wird auf „Task anlegen“ geklickt, wird ein neuer Task in der Tabelle Task erstellt (nachfolgende Zusatzinformation beachten).
————————————————————-
Zusatzinformation zum Namespace:
Doctrine muss als Bibliothek automatisch geladen werden
Datei: application/config/autoload.php
Ein Fehler der darauf hindeutet, dass die Bibliothek noch nicht geladen ist lauted:
Class ‚models\Task‘ not found
bezogen auf eine Zeile im Code an der „$task = new \models\Task();“ verwendet wird
Zusatzinformation zum Formhelper
Um in einer View-Datei mit dem Form-Helper zu arbeiten, muss dieser unter „Appclication/config/autoload.php“ aktiviert werden.
Hallo,
ich habe versucht, CI2 mit Doctrine2 entsprechend dieser Anleitungen (hauptsächlich nach: http://wildlyinaccurate.com/integrating-doctrine-2-with-codeigniter-2/) zu installieren.
bei dem versuch eine beziehung auszulesen, wie unter 4/5 und 5/5 beschrieben, bekomme ich folgende fehlermeldungen:
A PHP Error was encountered
Severity: Notice
Message: Undefined index: DB_KE_textart
Filename: Query/SqlWalker.php
Line Number: 738
Fatal error: Uncaught exception ‚PDOException‘ with message ‚SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near “ at line 1‘ in C:\xampp\htdocs\ffapp\application\libraries\Doctrine\DBAL\Connection.php:618 Stack trace: #0 C:\xampp\htdocs\ffapp\application\libraries\Doctrine\DBAL\Connection.php(618): PDO->query(‚SELECT d0_.id A…‘) #1 C:\xampp\htdocs\ffapp\application\libraries\Doctrine\ORM\Query\Exec\SingleSelectExecutor.php(46): Doctrine\DBAL\Connection->executeQuery(‚SELECT d0_.id A…‘, Array, Array) #2 C:\xampp\htdocs\ffapp\application\libraries\Doctrine\ORM\Query.php(249): Doctrine\ORM\Query\Exec\SingleSelectExecutor->execute(Object(Doctrine\DBAL\Connection), Array, Array) #3 C:\xampp\htdocs\ffapp\application\libraries\Doctrine\ORM\AbstractQuery.php(607): Doctrine\ORM\Query->_doExecute() #4 C:\xampp\htdocs\ffapp\application\libraries\Doctrine\ORM\AbstractQuery.php(413): Doctrine\ in C:\xampp\htdocs\ffapp\application\libraries\Doctrine\DBAL\Connection.php on line 618
Meine Umsetzung:
mein Controller (extends CI_Controller) ruft eine Funktion im model (extends CI_Model) auf. dort ist auch das eigentliche query mit join. Die entities befinden sich in dem unterordner models/Entities
Ich komme bei dem Problem leider überhaupt nicht weiter und hoffe, Sie können wir helfen.
MfG
Johannes Ofner
Me encanta!