Propel: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 4: Zeile 4:
|numberOfReferences  = 3
|numberOfReferences  = 3
|qualityOfReferences = 1
|qualityOfReferences = 1
|conformance        = 2
|conformance        = 3
}}
}}


'''Propel''' bietet [[Objektrelationales Mapping]] (ORM) für PHP 5, um Objekte in einer relationalen Datenbank speichern und bearbeiten zu können.
'''Propel''' ist eine [[ORM]]-Bibliothek für PHP 5.5+, die es erlaubt, PHP-Objekte in einer relationalen Datenbank zu speichern und zu bearbeiten.  


==Verwendungszweck==
==Funktionsweise==


Propel erlaubt vollständige Objektorientierte Programmierung, ohne dabei SQL-Abfragen schreiben zu müssen. Objekte können direkt aus einer Datenbank gelesen, aber auch in eine Datenbank geschrieben werden. Durch die Verwendung des ORM können SQL-Injections und andere Sicherheitslücken abgefangen werden, da zu keiner Zeit direkte
Propel erstellt die Modelle anhand von XML-Beschreibungsdateien, die mittels des Generators erstellt werden können. Durch die Runtine Engine werden die Objekte der eigenen PHP Anwendung zur Verfügung gestellt.
SQL-Abfragen bearbeitet werden.


==Funktionsweise==
==Beispiel<ref>http://propelorm.org/</ref><ref>http://sandbox.propelorm.org/example/bookstore</ref>==
'''Definition des [[Datenmodell]]s'''


Propel erstellt die Modelle anhand von XML-Beschreibungsdateien, die mittels des Generators erstellt werden können. Durch die Runtine Engine werden die Objekte der eigenen PHP Anwendung zur Verfügung gestellt.
<source lang="xml">
<database name="default">
  <table name="book">
    <column name="id"        type="integer"            required="true" primaryKey="true"
                                                                      autoIncrement="true"/>
    <column name="title"    type="varchar" size="255" required="true" />
    <column name="isbn"      type="varchar" size="24"  required="true" phpName="ISBN"/>
    <column name="author_id" type="integer"            required="true"/>
    <foreign-key foreignTable="author">
      <reference local="author_id" foreign="id"/>
    </foreign-key>
  </table>
  <table name="author">
    <column name="id"        type="integer"            required="true" primaryKey="true"
                                                                        autoIncrement="true"/>
    <column name="first_name" type="varchar" size="128" required="true"/>
    <column name="last_name"  type="varchar" size="128" required="true"/>
  </table>
</database>
</source>


==Beispiel==
'''Zugriff auf die Datenbank via Propel'''
Folgendes Beispiel würde ein neues Objekt erzeugen und dieses direkt in der Datenbank speichern.


<source lang="php">
<source lang="php">
$model = new TestModel();
<?php
$model->setTitle('Test-Title');
 
$model->save();
use Propel\Test\Bookstore\Author;
use Propel\Test\Bookstore\Book;
use Propel\Test\Bookstore\BookQuery;
 
$book = new Book();
$book->setTitle('My Heros');
$book->setIsbn('123154');
 
$author = new Author();
$author->setFirstName('Hans');
$author->setLastName('Zimmer');
 
$book->setAuthor($author);
$book->save();
 
$books = BookQuery::create()
          -> filterByTitle('My Heros')
          -> find();
</source>
</source>


Zeile 35: Zeile 70:
* [[Oracle]]
* [[Oracle]]


==Links==
==Quellen==
 
<references/>


* http://propelorm.org/
==Siehe auch==
* [http://www.symfony-project.org/book/1_2/08-Inside-the-Model-Layer Propel and Symfony Framework]
# [http://www.symfony-project.org/book/1_2/08-Inside-the-Model-Layer Propel and Symfony Framework]


[[Kategorie:Glossar]]
[[Kategorie:Glossar]]
[[Kategorie:Informatik]]
[[Kategorie:Informatik]]
[[Kategorie:World Wide Web]]
[[Kategorie:World Wide Web]]

Version vom 27. April 2016, 07:20 Uhr

Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:

Korrektheit: 2
(teilweise überprüft)
Umfang: 2
(wichtige Fakten fehlen)
Quellenangaben: 3
(wichtige Quellen vorhanden)
Quellenarten: 1
(ausreichend)
Konformität: 3
(gut)

Propel ist eine ORM-Bibliothek für PHP 5.5+, die es erlaubt, PHP-Objekte in einer relationalen Datenbank zu speichern und zu bearbeiten.

Funktionsweise

Propel erstellt die Modelle anhand von XML-Beschreibungsdateien, die mittels des Generators erstellt werden können. Durch die Runtine Engine werden die Objekte der eigenen PHP Anwendung zur Verfügung gestellt.

Beispiel[1][2]

Definition des Datenmodells

<database name="default">
  <table name="book">
    <column name="id"        type="integer"            required="true" primaryKey="true" 
                                                                       autoIncrement="true"/>
    <column name="title"     type="varchar" size="255" required="true" />
    <column name="isbn"      type="varchar" size="24"  required="true" phpName="ISBN"/>
    <column name="author_id" type="integer"            required="true"/>
    <foreign-key foreignTable="author">
      <reference local="author_id" foreign="id"/>
    </foreign-key>
  </table>
  <table name="author">
    <column name="id"         type="integer"            required="true" primaryKey="true" 
                                                                        autoIncrement="true"/>
    <column name="first_name" type="varchar" size="128" required="true"/>
    <column name="last_name"  type="varchar" size="128" required="true"/>
  </table>
</database>

Zugriff auf die Datenbank via Propel

<?php

use Propel\Test\Bookstore\Author;
use Propel\Test\Bookstore\Book;
use Propel\Test\Bookstore\BookQuery;

$book = new Book();
$book->setTitle('My Heros');
$book->setIsbn('123154');

$author = new Author();
$author->setFirstName('Hans');
$author->setLastName('Zimmer');

$book->setAuthor($author);
$book->save();

$books = BookQuery::create() 
          -> filterByTitle('My Heros')
          -> find();

Unterstütze Datenbanken

Quellen

Siehe auch

  1. Propel and Symfony Framework