Mysql 拉威尔4号口才雄辩,有许多关系似乎不起作用

Mysql 拉威尔4号口才雄辩,有许多关系似乎不起作用,mysql,select,join,laravel-4,eloquent,Mysql,Select,Join,Laravel 4,Eloquent,我有两个模型 class Product extends Eloquent { protected $table = 'products'; public function product_data() { return $this->hasMany('Product_translate','id_product'); } } 及 在我的控制器中,如果我尝试使用雄辩: 如您所见,没有结果,只有查询(在phpmyadmin中正确运行) 但是,

我有两个模型

class Product extends Eloquent {

    protected $table = 'products';

    public function product_data() {
        return $this->hasMany('Product_translate','id_product');
    }

}

在我的控制器中,如果我尝试使用雄辩:

如您所见,没有结果,只有查询(在phpmyadmin中正确运行)

但是,如果我尝试使用仅查找(1)的更改:

编辑1

使用查询生成器没有问题,但是为什么使用雄辩的ORM我会遇到这个问题呢

类PublicController扩展BaseController{

//file models/Product.php
class Product extends Eloquent 

    // in this name glass you well get $product->product_translates property 
    // gift  from eloquent dynamic property!!
    public function productTranslates() {
        return $this->hasMany('ProductTranslate');
    }
}

//file models/Product.php
class ProductTranslate extends Eloquent {

    public function product() {
        return $this->belongsTo('Product');
    }
}


// this will be work now!!
class PublicController extends BaseController {

    public function home() 
    {
        $products = Product::find(1);

        foreach($products->product_translates as $product_translate)
             echo $product_translate->name . " <br> ";

        $translates = ProductTranslate::All();

        foreach($translates as $translate)
             echo $translate->name. ": ". $translate->product->price . " <br> ";
    }

}
公共功能主页()
{
$products=DB::table('products')->leftJoin('product_translates'、'product_translates.id_product'、'='、'products.id')->get();
$queries=DB::getQueryLog();
$last_query=end($querys);
回声“;
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
打印(上次查询); 印刷品(产品); 回声“;
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
}

}

尝试执行此操作,让我们看看您得到了什么:

类PublicController扩展BaseController{
公共功能之家()
{
$product=产品::查找(1);
$p1=Product::with('Product_data')->where('id',1)->get();
回声“;
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
echo'----产品';
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
var_dump($产品); echo'----产品数据值';
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
变量转储($product->product\U data); echo'----产品数据查询';
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
var_dump($product->product_data()); echo'----产品数据已加载';
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
var_dump(1美元); 回声“;
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
} }
这个问题让我很长一段时间都很难受。。这是一个真正的解决办法

产品的型号名称应为ProductTranslate,然后无需设置表名属性。。。命名在指定的类名和(多名称部分)中非常重要。。解决方案如下:

//文件模型/Product.php
类积扩展雄辩
//在这个名称玻璃中,您将获得$product->product\u属性
//来自雄辩的动态属性的礼物!!
公共功能{
返回$this->hasMany('ProductTranslate');
}
}
//文件models/Product.php
类ProductTranslate扩展了雄辩的{
公共功能产品(){
返回$this->belongsTo(“产品”);
}
}
//这将是现在的工作!!
类PublicController扩展BaseController{
公共功能之家()
{
$products=产品::查找(1);
foreach($products->product_翻译为$product_翻译)
echo$product_translate->name.“
”;
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
$translates=ProductTranslate::All(); foreach($translate为$translate) echo$translate->name.:“$translate->product->price.”
”;
public function home() 
{
    $products = DB::table('products')->leftJoin('product_translates','product_translates.id_product','=','products.id')->get();

    $queries = DB::getQueryLog();
    $last_query = end($queries);

    echo "<pre>";

    print_r($last_query);
    print_r($products);

    echo "</pre>";
}
} }
是的,对不起,是我的错,我从代码中复制了错误的字符串,我使用的方法确实是di产品数据。问题更新错误否。。。这提供了大量的数据,不确定我看到了什么。。。无论如何,谢谢,我认为问题与方法的名称有关,我正在做一些实验。你能粘贴这些数据吗?我只是放了一些标题以便于调试。一些数据丢失了,“----Product data eager loaded”没有出现。