我在Laravel5.5中挣扎了一周,所以请大家帮我解决这个问题。
在我的数据库中,我有以下表格:
类别-id、创建时间、更新时间
类别翻译id、类别id、区域设置、用户id、名称、slug、创建时间、更新时间
团队-id、创建时间、更新时间
团队翻译-id、团队id、区域设置、标题、段塞、图像、正文、创建时间、更新时间
我使用Laravel可翻译的第三方从这里:https://github.com/dimsav/laravel-translatable
到目前为止,我已经成功地使用这些表创建了关系,在我的管理部分,我展示了创建的具有相关类别的团队。同样在首页,我在一页列表中显示所有团队。当我点击特定的团队时,它会显示团队页面。那太棒了。
我正在努力按类别展示团队。
这是我的代码。
类别模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;
class Category extends Model
{
use Translatable;
public $translatedAttributes = ['name', 'slug', 'status', 'user_id', 'image', 'locale'];
public function teams()
{
return $this->hasMany(Team::class);
}
}
类别翻译模型:
<?php
namespace App;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;
class CategoryTranslation extends Model
{
use Sluggable;
protected $touches = ['category'];
public $timestamps = false;
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
return [
'slug' => [
'source' => 'name',
'onUpdate' => true
]
];
}
public function category() {
return $this->belongsTo('App\Category');
}
}
团队模式:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;
class Team extends Model
{
use Translatable;
public $translatedAttributes = ['title', 'slug', 'body', 'status', 'user_id', 'image', 'category_id', 'locale'];
public function category() {
return $this->belongsTo(Category::class);
}
}
团队翻译模式:
<?php
namespace App;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;
class TeamTranslation extends Model
{
use Sluggable;
protected $touches = ['team'];
public $timestamps = false;
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
return [
'slug' => [
'source' => 'title',
'onUpdate' => true,
]
];
}
public function team() {
return $this->belongsTo(Team::class);
}
}
我的路线的一部分:
Route::get('/team/category/{category}', ['uses' => 'TeamController@teamCategory', 'as' => 'teamCategory']);
我的TeamController的一部分:
public function teamCategory(Category $category) {
return $category;
}
这是我的观点:
@extends('layouts.frontend')
@section('title', __('t.team'))
@section('content')
<div class="main team-list">
<div class="container">
<div class="col-md-3">
<ul>
@foreach($categories as $category)
<li><a href="{{ route('teamCategory', $category->slug) }}">{{ $category->name }}</a></li>
@endforeach
</ul>
</div>
<div class="col-md-9">
@foreach($teams as $team)
@if($team->status == 1)
<div class="row">
<div class="image">
<a href="{{ route('team.team', $team->slug) }}"><img width="120" src="{{ Storage::url($team->image) }}" ></a>
</div>
<div class="title">
{{ $team->title }}
</div>
<div class="body">
{!! str_limit($team->body, 300) !!}
</div>
<div class="category">
{{ $team->category ? $team->category->name : 'No category' }}
</div>
<a class="more">More</a>
</div>
@endif
@endforeach
</div>
</div>
</div>
@endsection
举个例子,我有一个类别名称php,所以在视图中,当我点击类别链接时,它会转到这个url:mywebsite.com/en/team/category/php,它会显示:
Sorry, the page you are looking for could not be found.
我尝试在类别模型中添加此方法:
public function getRouteKeyName() {
return 'slug';
}
它表明:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'slug' in 'where clause' (SQL: select * from `categories` where `slug` = php limit 1)
后来我也尝试过这个:
public function getRouteKeyName() {
return 'name';
}
但它表明:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'where clause' (SQL: select * from `categories` where `name` = php limit 1)
有人帮忙吗?
编辑:
我试过尼古拉这样的回答:
类别翻译模型:
<?php
namespace App;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;
class CategoryTranslation extends Model
{
use Sluggable;
protected $touches = ['category'];
public $timestamps = false;
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
return [
'slug' => [
'source' => 'category.slug',
'onUpdate' => true
]
];
}
public function category() {
return $this->belongsTo(Category::class);
}
}
团队翻译模式:
<?php
namespace App;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;
class TeamTranslation extends Model
{
use Sluggable;
protected $touches = ['team'];
public $timestamps = false;
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
return [
'slug' => [
'source' => 'team.slug',
'onUpdate' => true,
]
];
}
public function team() {
return $this->belongsTo(Team::class);
}
}
但它显示了同样的错误。
尝试将translate类中的2个Slagable方法更新为:
分类翻译。php
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
return [
'slug' => [
'source' => 'category.slug',
'onUpdate' => true
]
];
}
TeamTranslation.php
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
return [
'slug' => [
'source' => 'team.slug',
'onUpdate' => true
]
];
}
以上代码基于官方文档,应该与您的实现一起使用
编辑:我刚刚注意到您正在获取错误的实体从您的控制器,尝试使用此代码代替
public function teamCategory(CategoryTranslation $category) {
return $category;
}
我有模型用户,类别和邮政。帖子属于很多用户,很多类目。用户和类别不相关。我创建了一个自定义数据透视表,其中存储user_id和category_id,以及该表的模型类别块。我如何才能获得用户没有屏蔽的所有帖子?
我目前试图使3个表之间的关系。 数据库
我需要一些关于Woocommerce类别显示选项的帮助。在Wordpress仪表板中,我按照以下链接全局设置类别显示选项<外观- 有三种显示选项可用。 展示产品 目前,选择了第三个选项,它显示子类别以及父类别和子类别下的所有产品。但是,我想排除子类别下的所有产品。换句话说,我只想在父类别下显示子类别和产品。 我在几个教程网站上找到了以下片段。代码完全按照我想要的方式工作,但它也禁用了管理产品搜索和
我正在尝试显示: 链接类别标题 类别描述(修剪到自定义长度) 分类”Readmore样式链接 该类别中的帖子标题列表,链接到帖子 我已经用Foreach循环完成了任务1-3,但是我似乎不能通过我过去使用的方法在每个类别中显示帖子标题。主要的问题是,我不知道如何运行get_posts();或者像它这样的函数,在$args数组中有一个变量。 我觉得这真的需要用Foreach循环来完成,因为我正在处理2
嗨,我是拉威尔和我的新朋友,我试图在我的帖子和帖子评论之间建立一种关系。 我想用与posts id相同的post_id显示帖子上的所有评论。我认为应该是这样的。但是我不能让它工作。有什么建议吗? 在App\BlogComments中。php 在App\Post.php 在BlogCommentsController中: 在posts/show中。刀身php
我试图在侧边栏中显示当前页面的类别和子类别。标题应该是当前类别的名称,并链接到当前类别。我正在努力实现的一个例子可以在侧边栏中看到:https://food52.com/shop/pantry 以下是我当前的网站示例:https://farmtofrank.wpengine.com/product-category/prepared-foods/ 这是我迄今为止创建的代码: 它可以工作,但会将父链
更新2添加名称作为字段,而不是段塞,并添加the_title()只需给我一个页面标题的回声... 更新Jonnhyd23的代码非常有效!!谢谢有没有一种方法可以使术语变得动态?就像标题是阿姆斯特丹一样,我能做一些类似于
这是我在这里的第一篇帖子,而且我是一个初学者,所以请耐心听我说。 我想完成的是创建一个AJAX函数,该函数将以复选框的形式列出所有可用类别,用户可以从中选择。选择并点击“应用”后,我想显示分配给所选类别的帖子中所有标签的列表(也以复选框的形式)。然后用户可以从可用的标签中进行选择,然后在点击最后的“应用”按钮后,将显示相应的帖子。 类似于TED. com的“你感兴趣的是什么?”但是在AJAX中。所