PHP code example of umutphp / laravel-model-recommendation
1. Go to this page and download the library: Download umutphp/laravel-model-recommendation library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
umutphp / laravel-model-recommendation example snippets
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Umutphp\LaravelModelRecommendation\InteractWithRecommendation;
use Umutphp\LaravelModelRecommendation\HasRecommendation;
class Product extends Model implements InteractWithRecommendation
{
use HasFactory, HasRecommendation;
public static function getRecommendationConfig() :array
{
return [
'sold_together' => [
'recommendation_algorithm' => 'db_relation',
'recommendation_data_table' => 'order_products',
'recommendation_data_table_filter' => [],
'recommendation_data_field' => 'product_id',
'recommendation_data_field_type' => self::class,
'recommendation_group_field' => 'order_id',
'recommendation_count' => 5
]
];
}
}
...
use App\Model\Product;
Product::generateRecommendations('sold_together');
$product1 = Product::find(1);
$recommendations = $product1->getRecommendations('sold_together');
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Umutphp\LaravelModelRecommendation\InteractWithRecommendation;
use Umutphp\LaravelModelRecommendation\HasRecommendation;
class User extends Model implements InteractWithRecommendation
{
use HasFactory, HasRecommendation;
public static function getRecommendationConfig() :array
{
return [
'possible_match' => [
'recommendation_algorithm' => 'db_relation',
'recommendation_data_table' => 'user_friends',
'recommendation_data_table_filter' => [],
'recommendation_data_field' => 'friend_id',
'recommendation_data_field_type' => self::class,
'recommendation_group_field' => 'user_id',
'recommendation_count' => 5
]
];
}
}
...
use App\Model\User;
User::generateRecommendations('possible_match');
$user1 = User::find(1);
$recommendations = $user1->getRecommendations('possible_match');
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Umutphp\LaravelModelRecommendation\InteractWithRecommendation;
use Umutphp\LaravelModelRecommendation\HasRecommendation;
class Product extends Model implements InteractWithRecommendation
{
use HasFactory, HasRecommendation;
public static function getRecommendationConfig() :array
{
return [
'similar_products' => [
'recommendation_algorithm' => 'similarity',
'similarity_feature_weight' => 1,
'similarity_numeric_value_weight' => 1,
'similarity_numeric_value_high_range' => 1,
'similarity_taxonomy_weight' => 1,
'similarity_feature_attributes' => [
'material', 'color'
],
'similarity_numeric_value_attributes' => [
'price'
],
'similarity_taxonomy_attributes' => [
[
'category' => 'name'
]
],
'recommendation_count' => 2,
'recommendation_order' => 'desc'
]
];
}
/**
* Get the category associated with the product.
*/
public function category()
{
return $this->hasOne(Category::class);
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Umutphp\LaravelModelRecommendation\InteractWithRecommendation;
use Umutphp\LaravelModelRecommendation\HasRecommendation;
class Product extends Model implements InteractWithRecommendation
{
use HasFactory, HasRecommendation;
public static function getRecommendationConfig() :array
{
return [
'sold_together' => [
'recommendation_algorithm' => 'db_relation',
'recommendation_data_table' => 'order_products',
'recommendation_data_table_filter' => [],
'recommendation_data_field' => 'product_id',
'recommendation_data_field_type' => self::class,
'recommendation_group_field' => 'order_id',
'recommendation_count' => 5,
'recommendation_order' => 'random'
],
'similar_products' => [
'recommendation_algorithm' => 'similarity',
'similarity_feature_weight' => 1,
'similarity_numeric_value_weight' => 1,
'similarity_numeric_value_high_range' => 1,
'similarity_taxonomy_weight' => 1,
'similarity_feature_attributes' => [
'material', 'color'
],
'similarity_numeric_value_attributes' => [
'price'
],
'similarity_taxonomy_attributes' => [
[
'category' => 'name'
]
],
'recommendation_count' => 2,
'recommendation_order' => 'desc'
]
];
}
/**
* Get the category associated with the product.
*/
public function category()
{
return $this->hasOne(Category::class);
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Umutphp\LaravelModelRecommendation\InteractWithRecommendation;
use Umutphp\LaravelModelRecommendation\HasRecommendation;
class User extends Model implements InteractWithRecommendation
{
use HasFactory, HasRecommendation;
public static function getRecommendationConfig() :array
{
return [
'users_to_be_followed' => [
'recommendation_algorithm' => 'db_relation',
'recommendation_data_table' => 'user_follower',
'recommendation_data_table_filter' => [],
'recommendation_data_field' => 'following_id',
'recommendation_data_field_type' => self::class,
'recommendation_group_field' => 'follower_id',
'recommendation_count' => 5
]
];
}
}
...
use App\Model\User;
User::generateRecommendations('users_to_be_followed');
$user1 = User::find(1);
$recommendations = $user1->getRecommendations('users_to_be_followed');
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Umutphp\LaravelModelRecommendation\InteractWithRecommendation;
use Umutphp\LaravelModelRecommendation\HasRecommendation;
class User extends Model implements InteractWithRecommendation
{
use HasFactory, HasRecommendation;
public static function getRecommendationConfig() :array
{
return [
'users_to_follow' => [
'recommendation_algorithm' => 'db_relation',
'recommendation_data_table' => 'interactions',
'recommendation_data_table_filter' => [
'relation' => 'follow' // possible values are follow/like/subscribe/favorite/upvote/downvote. Choose the one that you want to generate the recommendation for.
],
'recommendation_data_field' => 'subject_id',
'recommendation_data_field_type' => self::class,
'recommendation_group_field' => 'user_id',
'recommendation_count' => 5
]
];
}
}
...
use App\Model\User;
User::generateRecommendations('users_to_follow');
$user1 = User::find(1);
$recommendations = $user1->getRecommendations('users_to_follow');