gpt4 book ai didi

mysql - Laravel 4 和 Eloquent, hasMany 关系似乎不起作用

转载 作者:行者123 更新时间:2023-11-30 00:30:22 24 4
gpt4 key购买 nike

我有 2 个模型

class Product extends Eloquent {

protected $table = 'products';

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

}

class Product_translate extends Eloquent {

protected $table = 'product_translates';

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

}

在我的 Controller 中,如果我尝试使用 Eloquent:

class PublicController extends BaseController {

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

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

echo "<pre>";

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

echo "</pre>";
}

}

这是我得到的:

Array
(
[query] => select * from `tp450products` where `id` = ? limit 1
[bindings] => Array
(
[0] => 1
)

[time] => 0.88
)

没有您所看到的结果,只有查询(在 phpmyadmin 中正确运行),

但是如果我尝试仅使用 find(1) 来使用更改:

class PublicController extends BaseController {

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

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

echo "<pre>";

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

echo "</pre>";
}

}

我获取了表“products”的记录,但我想获取与“product_translates”的连接。不知道出了什么问题!

数据库已正确链接,并且“product_translates”具有正确的外键

这里有 2 个表(每个表只有一条记录):

Products
id | type | best | featured | voto | created_at | updated_at
1 | 1 | 0 | 0 | 0 | 2014-03-19 00:00:00 | 2014-03-12 13:26:23

Product_translates
id | id_product | id_lang | nome | slug
1 | 1 | 1 | mutande ascellari | mutande-ascellari

编辑 1

使用查询生成器没有问题,但为什么使用 Eloquent ORM 时会出现这个问题?

类 PublicController 扩展了 BaseController {

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>";
}

}

最佳答案

尝试执行此命令,看看您会得到什么:

class PublicController extends BaseController {

public function home()
{
$product = Product::find(1);
$p1 = Product::with('product_data')->where('id',1)->get();

echo "<pre>";

echo '---- Product';
var_dump($product);

echo '---- Product data values';
var_dump($product->product_data);

echo '---- Product data query';
var_dump($product->product_data());

echo '---- Product data eager loaded';
var_dump($p1);

echo "</pre>";
}

}

关于mysql - Laravel 4 和 Eloquent, hasMany 关系似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com