Fixes on new model
This commit is contained in:
@@ -13,30 +13,15 @@ class ArticlesDataTable extends DataTable
|
||||
public function query(Article $model)
|
||||
{
|
||||
// $model = $model::with('Family')->select('shop_articles.*','family.name as family_name')->join('shop_article_families as family', 'family.id', '=', 'shop_articles.article_family_id')->groupBy('shop_articles.id');
|
||||
$model = $model::with('Family')->select('shop_articles.*');
|
||||
$model = $model::with('article_family')->select('shop_articles.*');
|
||||
// $model = $model::joinRelations('Family')->select('shop_articles.*','shop_article_families.name as family_name');
|
||||
return self::buildQuery($model);
|
||||
}
|
||||
|
||||
protected function getColumns()
|
||||
{
|
||||
/*
|
||||
$columns = [];
|
||||
$columns[] = [
|
||||
'name' => 'family',
|
||||
'data' => 'family.name',
|
||||
'title' => 'Famille',
|
||||
'orderable' => false
|
||||
];
|
||||
$columns[] = [
|
||||
'name' => 'name',
|
||||
'title' => 'Nom',
|
||||
];
|
||||
$columns[] = self::makeColumnButtons();
|
||||
return $columns;
|
||||
*/
|
||||
return [
|
||||
Column::make('family.name')->title('Famille')->orderable(false),
|
||||
Column::make('article_family.name')->title('Famille')->orderable(false),
|
||||
Column::make('name')->title('Nom'),
|
||||
self::makeColumnButtons(),
|
||||
];
|
||||
|
||||
@@ -12,7 +12,7 @@ class ArticleAttributeFamilyController extends Controller
|
||||
{
|
||||
public function index(ArticleAttributeFamiliesDataTable $dataTable)
|
||||
{
|
||||
return $dataTable->render('Shop.Admin.ArticleAttributeFamilies.index');
|
||||
return $dataTable->render('Shop.Admin.ArticleAttributeFamilies.list');
|
||||
}
|
||||
|
||||
public function getDatatable(Request $request)
|
||||
|
||||
@@ -46,4 +46,9 @@ class Article extends Model implements HasMedia
|
||||
return $this->belongsTo($this->model, 'model_id');
|
||||
}
|
||||
|
||||
public function scopeByArticle($query, $id)
|
||||
{
|
||||
return $query->where('shop_articles.id',$id);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,9 +3,12 @@
|
||||
namespace App\Models\Shop;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Znck\Eloquent\Traits\BelongsToThrough;
|
||||
|
||||
class ArticlePrice extends Model
|
||||
{
|
||||
use BelongsToThrough;
|
||||
|
||||
protected $guarded = ['id'];
|
||||
protected $table = 'shop_article_prices';
|
||||
|
||||
@@ -16,7 +19,21 @@ class ArticlePrice extends Model
|
||||
|
||||
public function article()
|
||||
{
|
||||
return $this->belongsTo('App\Models\Shop\Article');
|
||||
return $this->belongsToThrough(
|
||||
'App\Models\Shop\Article',
|
||||
'App\Models\Shop\ArticleAttribute',
|
||||
null,
|
||||
'',
|
||||
['App\Models\Shop\Article' => 'article_id', 'App\Models\Shop\ArticleAttribute' => 'article_attribute_id']
|
||||
);
|
||||
}
|
||||
|
||||
public function scopeByArticle($query, $id)
|
||||
{
|
||||
return $query->whereHas('article', function ($query) use ($id) {
|
||||
$query->byArticle($id);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,8 +12,7 @@ use Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin;
|
||||
|
||||
class Category extends Model
|
||||
{
|
||||
use Taggable;
|
||||
use HasMediaTrait;
|
||||
use Taggable, HasMediaTrait;
|
||||
|
||||
protected $guarded = ['id'];
|
||||
protected $table = 'shop_categories';
|
||||
|
||||
@@ -25,17 +25,27 @@ class ArticleAttributes
|
||||
return ArticleAttribute::find($id);
|
||||
}
|
||||
|
||||
public static function storeAttributes($article_price_id, $attributes)
|
||||
public static function getByArticle($id)
|
||||
{
|
||||
return ArticleAttribute::byArticle($id)->get();
|
||||
}
|
||||
|
||||
public static function getByArticleWithPrices($id)
|
||||
{
|
||||
return ArticleAttribute::with('prices')->byArticle($id)->get();
|
||||
}
|
||||
|
||||
public static function storeAttributes($article_id, $attributes)
|
||||
{
|
||||
foreach ($attributes as $key => $attribute)
|
||||
{
|
||||
self::storeAttribute($article_price_id, $attributes[$key]);
|
||||
self::storeAttribute($article_id, $attributes[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
public static function storeAttribute($article_price_id, $attribute)
|
||||
public static function storeAttribute($article_id, $attribute)
|
||||
{
|
||||
$attribute['article_price_id'] = $article_price_id;
|
||||
$attribute['article_id'] = $article_id;
|
||||
unset($attribute['attribute_family_id']);
|
||||
return self::store($attribute);
|
||||
}
|
||||
|
||||
@@ -13,9 +13,14 @@ use App\Models\Shop\ArticlePrice;
|
||||
class ArticlePrices
|
||||
{
|
||||
|
||||
public static function getPricesByArticle($id)
|
||||
public static function getByArticle($id)
|
||||
{
|
||||
return ArticlePrice::with('ArticleAttributes.Value')->byArticle($id)->get()->toArray();
|
||||
return ArticlePrice::byArticle($id)->get();
|
||||
}
|
||||
|
||||
public static function getByArticleWithAttribute($id)
|
||||
{
|
||||
return ArticlePrice::with('article_attribute')->byArticle($id)->get();
|
||||
}
|
||||
|
||||
public static function getDatatable()
|
||||
@@ -34,11 +39,11 @@ class ArticlePrices
|
||||
return ArticlePrice::find($id);
|
||||
}
|
||||
|
||||
public static function storePrices($article_id, $prices)
|
||||
public static function storePrices($article_attribute_id, $prices)
|
||||
{
|
||||
if ($prices) {
|
||||
foreach ($prices as $key => $price) {
|
||||
$prices[$key]['article_id'] = $article_id;
|
||||
$prices[$key]['article_attribute_id'] = $article_attribute_id;
|
||||
self::store($prices[$key]);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -30,6 +30,7 @@ class Articles
|
||||
$data = $article->toArray();
|
||||
$data['categories'] = self::getCategoriesByArticle($article);
|
||||
$data['tags'] = self::getTagsByArticle($article);
|
||||
// $data['attributes'] = self::getAttributesByArticle($article);
|
||||
$data['prices'] = self::getPricesByArticle($article);
|
||||
self::getMeta($data);
|
||||
return $data;
|
||||
@@ -56,9 +57,14 @@ class Articles
|
||||
return $article->tags->pluck('id')->toArray();
|
||||
}
|
||||
|
||||
public static function getAttributesByArticle($article)
|
||||
{
|
||||
return ArticleAttributes::getByArticleWithPrices($article->id)->toArray();
|
||||
}
|
||||
|
||||
public static function getPricesByArticle($article)
|
||||
{
|
||||
return ArticlePrices::getPricesByArticle($article->id);
|
||||
return ArticlePrices::getByArticleWithAttribute($article->id)->toArray();
|
||||
}
|
||||
|
||||
public static function get($id)
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
"spatie/laravel-activitylog": "^3.6",
|
||||
"spatie/laravel-backup": "^6.2",
|
||||
"spatie/laravel-medialibrary": "^7.0",
|
||||
"staudenmeir/belongs-to-through": "^2.5",
|
||||
"staudenmeir/eloquent-has-many-deep": "^1.8",
|
||||
"stillat/numeral.php": "^2.0",
|
||||
"te7a-houdini/laroute": "^1.0",
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
|
||||
@section('content')
|
||||
@component('components.card')
|
||||
@include('components.datatable', ['route' => route('Botanic.Admin.Families.index'), 'model' => 'families'])
|
||||
@include('components.datatable', ['route' => route('Botanic.Admin.Families.index'), 'model' => 'Families'])
|
||||
@endcomponent
|
||||
@endsection
|
||||
@@ -10,10 +10,10 @@
|
||||
|
||||
<nav>
|
||||
<div class="nav nav-tabs">
|
||||
<a href="#families" data-toggle="tab" class="nav-item nav-link active" role="tab" aria-controls="families" aria-selected="true">
|
||||
<a href="#families" data-toggle="tab" class="nav-item nav-link" role="tab" aria-controls="families" aria-selected="true">
|
||||
{{ __('Shop.article_attribute_families.title') }}
|
||||
</a>
|
||||
<a href="#values" data-toggle="tab" class="nav-item nav-link" role="tab" aria-controls="values" aria-selected="false">
|
||||
<a href="#values" data-toggle="tab" class="nav-item nav-link active" role="tab" aria-controls="values" aria-selected="false">
|
||||
{{ __('Shop.article_attribute_values.title') }}
|
||||
</a>
|
||||
</div>
|
||||
@@ -21,13 +21,13 @@
|
||||
|
||||
<div class="tab-content mb-0">
|
||||
|
||||
<div class="tab-pane fade show active" id="families">
|
||||
<div class="tab-pane fade" id="families">
|
||||
@component('components.card')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeFamilies.index'), 'model' => 'ArticleAttributeFamilies'])
|
||||
@endcomponent
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="values">
|
||||
<div class="tab-pane fade show active" id="values">
|
||||
@component('components.card')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeValues.index'), 'model' => 'ArticleAttributeValues'])
|
||||
@endcomponent
|
||||
|
||||
@@ -7,7 +7,3 @@
|
||||
@section('content')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeFamilies.index'), 'model' => 'ArticleAttributefamilies'])
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
@include('components.js.datatable', ['route' => route('Shop.Admin.ArticleAttributeFamilies.index'), 'model' => 'ArticleAttributefamilies'])
|
||||
@endpush
|
||||
@@ -0,0 +1,49 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('Shop.article_attribute_families.title'),
|
||||
'subtitle' => __('Shop.article_attribute_families.list'),
|
||||
'breadcrumb' => [__('Shop.article_attribute_families.title')]
|
||||
])
|
||||
|
||||
@include('boilerplate::load.select2')
|
||||
|
||||
@section('content')
|
||||
|
||||
<nav>
|
||||
<div class="nav nav-tabs">
|
||||
<a href="#families" data-toggle="tab" class="nav-item nav-link" role="tab" aria-controls="families" aria-selected="true">
|
||||
{{ __('Shop.article_attribute_families.title') }}
|
||||
</a>
|
||||
<a href="#values" data-toggle="tab" class="nav-item nav-link active" role="tab" aria-controls="values" aria-selected="false">
|
||||
{{ __('Shop.article_attribute_values.title') }}
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="tab-content mb-0">
|
||||
|
||||
<div class="tab-pane fade" id="families">
|
||||
@section('content')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeFamilies.index'), 'model' => 'ArticleAttributefamilies'])
|
||||
@endsection
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade show active" id="values">
|
||||
@section('content')
|
||||
@component('components.card')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeValues.index'), 'model' => 'articleattributevalues'])
|
||||
@endcomponent
|
||||
|
||||
@component('components.layout.modal', ['title' => 'Filtres', 'id' => 'modal-filters'])
|
||||
@include('Shop.Admin.ArticleAttributeValues.partials.filters')
|
||||
@endcomponent
|
||||
@endsection
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
@include('components.js.datatable', ['route' => route('Shop.Admin.ArticleAttributeFamilies.index'), 'model' => 'ArticleAttributeFamilies'])
|
||||
@include('components.js.datatable', ['route' => route('Shop.Admin.ArticleAttributeValues.index'), 'model' => 'ArticleAttributeValues'])
|
||||
@endpush
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
@section('content')
|
||||
@component('components.card')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeValues.index'), 'model' => 'articleattributevalues'])
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleAttributeValues.index'), 'model' => 'ArticleAttributeValues'])
|
||||
@endcomponent
|
||||
|
||||
@component('components.layout.modal', ['title' => 'Filtres', 'id' => 'modal-filters'])
|
||||
|
||||
@@ -5,9 +5,5 @@
|
||||
])
|
||||
|
||||
@section('content')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleFamilies.index'), 'model' => 'articlefamilies'])
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.ArticleFamilies.index'), 'model' => 'ArticleFamilies'])
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
@include('components.js.datatable', ['route' => route('Shop.Admin.ArticleFamilies.index'), 'model' => 'articlefamilies'])
|
||||
@endpush
|
||||
@@ -9,6 +9,7 @@
|
||||
@section('content')
|
||||
|
||||
{{ Form::open(['route' => 'Shop.Admin.Articles.store', 'id' => 'article-form', 'autocomplete' => 'off', 'files' => true]) }}
|
||||
<input type="hidden" name="id" id="id" value="{{ $id }}">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 mbl">
|
||||
@@ -22,7 +23,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="id" id="id" value="{{ $id }}">
|
||||
@include('Shop.Admin.Articles.form')
|
||||
</form>
|
||||
|
||||
|
||||
@@ -7,7 +7,3 @@
|
||||
@section('content')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.Articles.index'), 'model' => 'articles'])
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
@include('components.js.datatable', ['route' => route('Shop.Admin.Articles.index'), 'model' => 'articles'])
|
||||
@endpush
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
@include('Shop.Admin.Articles.partials.prices.block_attribute', ['attribute' => $price['article_attributes'][0]])
|
||||
@include('Shop.Admin.Articles.partials.prices.block_attribute', ['attribute' => $price['article_attribute']])
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
|
||||
@@ -7,7 +7,3 @@
|
||||
@section('content')
|
||||
@include('components.datatable', ['route' => route('Shop.Admin.TagGroups.index'), 'model' => 'TagGroups'])
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
@include('components.js.datatable', ['route' => route('Shop.Admin.TagGroups.index'), 'model' => 'TagGroups'])
|
||||
@endpush
|
||||
Reference in New Issue
Block a user