我在laravel中遇到了一些关系,以及如何使用它们以后从这些数据库表中获取信息。
我很乐意,如果有人会纠正我,并告诉我如何纠正我的错误,而不是我不理解的事情。
我会遇到一个问题,并告诉我如何理解这一点并且有效,并且如果我错了,请纠正我。
所以,我的问题是:
我有这个单学期的最终项目 - e-commerces网站。 我现在遇到一个问题,我的视图控制器无法理解我想要使用的变量。
我现在就全力以赴。
所以,我有两张桌子用于获取我在DB中存放的商品。
这是我的子类别表,我将从中获取每个子类别商品
Schema::create('apakskategorijas', function (Blueprint $table) {
$table->increments('id');
$table->string('nosaukums');
$table->integer('kategorijas_id')->unsigned()->index();
$table->foreign('kategorijas_id')->references('id')->on('kategorijas');
$table->timestamps();
});
此表引用了与主类别表相关联的字段,但现在这并不重要。
这是一张桌子,我存放货物。
Schema::create('preces', function (Blueprint $table) {
$table->increments('id');
$table->string('nosaukums');
$table->decimal('cena');
$table->string('path');
$table->integer('apakskategorijas_id')->unsigned()->index();
$table->foreign('apakskategorijas_id')->references('id')->on('apakskategorijas');
$table->timestamps();
});
如您所见,我在子类别表中引用了id字段。到目前为止一切都很好。
现在,我已经为每个表创建了模型,在那里我建立了我的关系。
这是我在模型中的子类别
class apakskategorijas extends Model
{
//relācija ar modeli kategorijas
public function kategorija()
{
return $this->belongsTo('kategorijas');
}
public function prece()
{
return $this->hasMany(preces::class,);
}
}
我希望我做对了 - 我有一个函数优先级来创建对子类别表的引用。纠正我,如果我错了(preces::class,'apakskategorijas_id')
- 这段代码显示我使用preces类,我通过列'apakskategorijas_id'
引用这个子类别类,从货物表到子类别表引用。
这里是我的商品课程
class preces extends Model
{
public function apakskategorija()
{
$this->belongsTo('apakskategorijas');
}
}
我告诉我,这个类因为引用属于子类别表,所以它会知道我来自哪里等等。
现在出现了我最挣扎的部分,以前信息的使用,如何使用它来从商品表中获得每件商品。
我的控制器有一条路线,它将获得子类别的ID,并且在关系的帮助下将返回所有商品。
Route::get('kategorija/apakskategorija/preces/{id}','routes@preces');
这是控制器
public function preces($id)
{
$apakskat = apakskategorijas::with('prece')->get();
$precess = preces::where('apakskategorija_id',$id)->get();
return view ('prece.preces',compact('apakskat','precess'));
}
在这里,我已经知道代码是错误的,很难看。我想了解我现在如何处理以前制作的信息以便在我看来退货。据我所知,我需要创建一个引用函数的变量,其中我创建了hasMany关系。但在该功能中我告诉我将使用外键到子类别表。这可能是我如何获得我需要从帽子特定子类别返回货物的子类别ID。 现在我不知道如何进一步工作。我如何使用$id
以及我需要的所有其他内容?它向我显示错误,我试图传递给视图的变量未定义。
以下是我的观点
@foreach($apakskat as $prec)
<div class="col-md-4 kat">
<img src="{{ URL::to($prec->path) }}">
<p>{{$prec->nosaukums}}</p>
<a href="{{ url('kategorija/apakskategorija/prece'.$prec->id) }}"><p>{{$prec->cena}}</p></a>
</div>
@endforeach
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
在你的模特中
library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: inDL(x, as.logical(local), as.logical(now), ...)
error: unable to load shared object 'C:/Users/Taqwa/Documents/R/win-library/3.1/rJava/libs/x64/rJava.dll':
LoadLibrary failure: The specified module could not be found.
Error: package or namespace load failed for ‘rJava’
> library(xlsx)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: inDL(x, as.logical(local), as.logical(now), ...)
error: unable to load shared object 'C:/Users/Taqwa/Documents/R/win-library/3.1/rJava/libs/x64/rJava.dll':
LoadLibrary failure: The specified module could not be found.
Error: package ‘rJava’ could not be loaded
> raw23370 <- read.xlsx("C:\\Users\\Taqwa\\Desktop\\stations\\stations\\23370.xlsx",1)
Error: could not find function "read.xlsx"
> out <- createWorkbook()
Error: could not find function "createWorkbook"
> three_d_array <- array(0,dim = c(92, 6, 600))
> #options(java.parameters = "-Xmx1000m")
> for (i in 1:600){
+ candy = 1:nrow(raw23370)
+
+ B=sample(candy,nrow(raw23370) , replace=T)
+
+ a=raw23370[B,]
+ assign(paste0("sheet", i), createSheet(wb = out, sheetName = as.character(i)))
+ # you don't really need your three_d_array
+ addDataFrame(x = a, sheet = eval(as.name(paste0("sheet", i))))
+ }
Error in nrow(raw23370) : object 'raw23370' not found
> saveWorkbook(out, "C:\\Users\\Taqwa\\Desktop\\stations\\23370_output.xlsx")
Error: could not find function "saveWorkbook"
在您的控制器中
class apakskategorijas extends Model
{
public function kategorija()
{
return $this->belongsTo('kategorijas');
}
public function prece()
{
return $this->hasMany(preces::class);
}
}
这将返回$ id的子类别,其中包含属于子类别$ id的所有商品。
在你的视图中
public function preces($id)
{
$apakskat = apakskategorijas::where('id',$id)->with('prece')->get();
return view ('prece.preces',compact('apakskat'));
}
我希望这会有用:)
答案 1 :(得分:0)