Guest User

Untitled

a guest
Nov 2nd, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.88 KB | None | 0 0
  1. <?php
  2.  
  3. use IlluminateDatabaseMigrationsMigration;
  4. use IlluminateDatabaseSchemaBlueprint;
  5. use IlluminateSupportFacadesSchema;
  6.  
  7. class CreateMyTableTable extends Migration
  8. {
  9. /**
  10. * Run the migrations.
  11. */
  12. public function up(): void
  13. {
  14. Schema::create('my_table', function (Blueprint $table) {
  15. $table->increments('id');
  16.  
  17. $table->integer('user_id')->unsigned();
  18. $table->foreign('user_id')->references('id')->on('user');
  19.  
  20. $table->tinyInteger('from_default')->nullable(false)->default(7);
  21. $table->tinyInteger('to_default')->nullable(false)->default(20);
  22. $table->timestamps();
  23.  
  24. $table->unique('user_id');
  25. });
  26. }
  27.  
  28. /**
  29. * Reverse the migrations.
  30. */
  31. public function down(): void
  32. {
  33. Schema::dropIfExists('my_table', function (Blueprint $table) {
  34. $table->dropUnique(['user_id']);
  35. $table->dropForeign(['user_id']);
  36. });
  37. }
  38. }
  39.  
  40. Field Type Null Key Default Extra
  41. -------------------------------------------------------------------------------
  42. id int(10) unsigned NO PRI auto_increment
  43. user_id int(10) unsigned NO UNI
  44. from_default tinyint(4) NO 7
  45. to_default tinyint(4) NO 20
  46. created_at timestamp YES
  47. updated_at timestamp YES
  48.  
  49. <?php
  50.  
  51. use AppDomainLogicModelsMyTable;
  52. use AppDomainLogicModelsUser;
  53. use FakerFactory as FakerFactory;
  54. use IlluminateDatabaseSeeder;
  55.  
  56. class MyTableTableSeeder extends Seeder
  57. {
  58. /**
  59. * @var array list of MyTable Users
  60. */
  61. private $myTableUsers = [];
  62.  
  63. /**
  64. * Run the database seeds.
  65. */
  66. public function run()
  67. {
  68. $this->createMyTableUsers();
  69. $myTableUsers = $this->getMyTableUsers();
  70. foreach ($myTableUsers as $myTableUser) {
  71. factory(MyTable::class)->create([
  72. 'user_id' => $myTableUser->getKey(),
  73. 'from_default' => 7,
  74. 'to_default' => 20,
  75. ]);
  76. }
  77. }
  78.  
  79. private function getMyTableUsers(): array
  80. {
  81. return $this->myTableUsers;
  82. }
  83.  
  84. private function createMyTableUsers()
  85. {
  86. $faker = FakerFactory::create();
  87.  
  88. // My table
  89. $this->myTableUsers[] = factory(User::class)->create([
  90. 'id' => 2,
  91. 'first_name' => 'Kalle',
  92. 'last_name' => 'Andersson',
  93. 'email' => 'kalle.andersson@email.com',
  94. 'password' => bcrypt('password', ['rounds' => 4]),
  95. 'mobile_number' => $faker->e164PhoneNumber,
  96. ]);
  97. $this->myTableUsers[] = factory(User::class)->create([
  98. 'id' => 3,
  99. 'first_name' => 'Johan',
  100. 'last_name' => 'Petterson',
  101. 'email' => 'johan.petterson@email.com',
  102. 'password' => bcrypt('password', ['rounds' => 4]),
  103. 'mobile_number' => $faker->e164PhoneNumber,
  104. ]);
  105. $this->myTableUsers[] = factory(User::class)->create([
  106. 'id' => 4,
  107. 'first_name' => 'Krister',
  108. 'last_name' => 'Johansson',
  109. 'email' => 'krister.johansson@email.com',
  110. 'password' => bcrypt('password', ['rounds' => 4]),
  111. 'mobile_number' => $faker->e164PhoneNumber,
  112. ]);
  113. $this->myTableUsers[] = factory(User::class)->create([
  114. 'id' => 5,
  115. 'first_name' => 'Daniel',
  116. 'last_name' => 'Eriksson',
  117. 'email' => 'daniel.eriksson@email.com',
  118. 'password' => bcrypt('password', ['rounds' => 4]),
  119. 'mobile_number' => $faker->e164PhoneNumber,
  120. ]);
  121. }
  122. }
  123.  
  124. In Connection.php line 664:
  125.  
  126. SQLSTATE[42S22]: Column not found: 1054 Unknown column 'starts_day_default' in 'field list' (SQL: insert into `my_table` (`user_id`, `starts_day_default`, `ends_day_default`, `from_default`, `to_default`) values (2, 07, 20, 7, 20))
  127.  
  128. In PDOConnection.php line 82:
  129.  
  130. SQLSTATE[42S22]: Column not found: 1054 Unknown column 'starts_day_default' in 'field list'
  131.  
  132. In PDOConnection.php line 80:
  133.  
  134. SQLSTATE[42S22]: Column not found: 1054 Unknown column 'starts_day_default' in 'field list'
  135.  
  136. <?php
  137.  
  138. namespace AppDomainLogicModels;
  139.  
  140. use DateTimeImmutable;
  141. use IlluminateDatabaseEloquentCollection;
  142. use IlluminateDatabaseEloquentModel;
  143.  
  144. class MyTable extends Model
  145. {
  146. /**
  147. * Indicates if the model should be timestamped.
  148. *
  149. * @var bool
  150. */
  151. public $timestamps = false;
  152. /**
  153. * The table associated with the model.
  154. *
  155. * @var string
  156. */
  157. protected $table = 'my_table';
  158.  
  159. /**
  160. * Creates personal trainer, if personal trainer with id exists.
  161. *
  162. * @param int $myTableId
  163. *
  164. * @return null|self
  165. */
  166. public static function createFromId(int $myTableId): ?self
  167. {
  168. $myTable = self::select('my_table.*')
  169. ->join('user', 'user.id', '=', 'my_table.user_id')
  170. ->where('my_table.id', '=', $myTableId)
  171. ->whereNull('user.anonymized_at')
  172. ->get()
  173. ->first();
  174.  
  175. return $myTable;
  176. }
  177.  
  178. /**
  179. * Create personal trainer, if user_id exists.
  180. *
  181. * @param int $userId
  182. *
  183. * @return null|MyTable
  184. */
  185. public static function createFromUserId(int $userId): ?self
  186. {
  187. return self::where('user_id', $userId)->get()->first();
  188. }
  189.  
  190. /**
  191. * Gets all personal trainers.
  192. *
  193. * @param bool $active
  194. *
  195. * @return Collection
  196. */
  197. public static function getMyTables(bool $active = null): Collection
  198. {
  199. $query = self::select('my_table.*')
  200. ->join('user', 'user.id', '=', 'my_table.user_id')
  201. ->whereNull('user.anonymized_at');
  202.  
  203. if (isset($active)) {
  204. $query->where('user.active', '=', $active);
  205. }
  206.  
  207. $myTables = $query->get();
  208.  
  209. return $myTables;
  210. }
  211.  
  212. /**
  213. * Gets user.
  214. */
  215. public function getUser(): User
  216. {
  217. $user = $this->belongsTo(User::class, 'user_id', 'id')->getResults();
  218.  
  219. return $user;
  220. }
  221.  
  222. /**
  223. * Check if personal trainers ids are valid.
  224. *
  225. * @param array $myTableIds
  226. *
  227. * @return bool
  228. */
  229. public static function areMyTableIdsValid(array $myTableIds): bool
  230. {
  231. $dbMyTableIds = self::select('my_table.id')
  232. ->join('user', 'user.id', '=', 'my_table.user_id')
  233. ->whereIn('my_table.id', $myTableIds)
  234. ->whereNull('user.anonymized_at')
  235. ->get()
  236. ->pluck('id')
  237. ->toArray();
  238.  
  239. $dbMyTableIds = array_map('intval', $dbMyTableIds);
  240. sort($myTableIds);
  241. sort($dbMyTableIds);
  242.  
  243. $result = false;
  244. if ($myTableIds === $dbMyTableIds) {
  245. $result = true;
  246. }
  247.  
  248. return $result;
  249. }
  250. }
  251.  
  252. php artisan view:clear
  253.  
  254. php artisan cache:clear
  255.  
  256. php artisan debugbar:clear
  257.  
  258. composer dump-autoload
Add Comment
Please, Sign In to add comment