php - 插入加入行为

标签 php mysql symfony join propel

我这样做:

$model = ProductQuery::create()
        ->filterById($id)
        ->joinLocale()
        ->joinProducer()
        ->joinCategory()
        ->joinFile()
        ->joinSeo()
        ->find();

这将创建查询:

SELECT 
       Food_Product.id,
       Food_Product.locale_id,
       Food_Product.category_id,
       Food_Product.producer_id,
       Food_Product.file_id,
       Food_Product.seo_id,
       Food_Product.customer_id,
       Food_Product.name,
       Food_Product.description,
       Food_Product.nutrient_unit,
       Food_Product.ean,
       Food_Product.top,
       Food_Product.calls,
       Food_Product.visible,
       Food_Product.created_at,
       Food_Product.updated_at,
       Food_Product.created_by,
       Food_Product.updated_by 
FROM `Food_Product` 
INNER JOIN `I18n_Locale` ON (Food_Product.locale_id=I18n_Locale.id) 
LEFT JOIN `Food_Producer` ON (Food_Product.producer_id=Food_Producer.id) 
INNER JOIN `System_Category` ON (Food_Product.category_id=System_Category.id) 
LEFT JOIN `Media_File` ON (Food_Product.file_id=Media_File.id) 
INNER JOIN `System_Seo` ON (Food_Product.seo_id=System_Seo.id) 
WHERE Food_Product.id='1'

我只是得到一个没有相关数据的产品实例。因此,如果我调用 $product->getProducer(),将会有另一个数据库请求。

如果我添加 ->select('*'), 我不再获得实体实例,而是获得包含产品数据的数组。但同样,没有生产者、区域设置或类别数据。

最佳答案

我注意到,->joinWith('Producer')。而不是 ->joinProducer() 就像一个魅力。

关于php - 插入加入行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22960623/

相关文章:

php - 将 cookie 从第一个响应复制到下一个请求

php - 使用 php ://input 内存耗尽

PHP/MySQL 按列对结果进行分组

php - PHP 中的 mysqli_query 问题 - 查询在 phpmyadmin 中有效,在 PHP 中无效

php - Symfony2 没有要处理的元数据类

symfony - 如何为使用 stwe/DatatablesBundle 生成的表中的行着色?

php - 为开发环境禁用 PHP sendmail

php - 多维数组到 MySQL

mysql - Liquibase : postgres fails, mysql - 好的

angularjs - Symfony 和 Angular 应用程序